Boost C++ 库

...世界上最受推崇和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

稀疏存储

默认标准 Map

描述

模板类 map_std<I, T, ALLOC> 为标准库关联容器 std::map 提供了一个包装器。该包装器有一个简单的目的。它允许在声明稀疏容器类型时定义默认模板参数(对于适配数组)。

示例

#include <boost/numeric/ublas/storage_sparse.hpp>

int main () {
    using namespace boost::numeric::ublas;
    map_std<int, double> a (3);
    for (unsigned i = 0; i < a.size (); ++ i) {
        a [i] = i;
        std::cout << a [i] << std::endl;
    }
}

定义

定义于头文件 storage_sparse.hpp 中。

模板参数

参数 描述 默认值
I 存储在数组中的索引类型。
T 存储在数组中的对象类型。
ALLOC 一个 STL 分配器 std::allocator

模型

可逆容器。

类型要求

无,除了可逆容器的要求所施加的那些。

公共基类

std::map

Map 数组

描述

模板类 map_array<I, T, ALLOC> 将类似 std::map 的关联容器实现为排序数组。因此,它具有关联容器接口的某些特性,但语义与 std::map 不同。

在任何时候,map_array 都有一个容量上限,在此上限内可以插入新元素。如果 insert 操作会导致 map_array 的大小超过其容量,则会进行重新分配。迭代器和引用将失效。容量可以使用 reserve 成员函数直接控制。

示例

#include <boost/numeric/ublas/storage_sparse.hpp>

int main () {
    using namespace boost::numeric::ublas;
    map_array<int, double> a (3);
    for (unsigned i = 0; i < a.size (); ++ i) {
        a [i] = i;
        std::cout << a [i] << std::endl;
    }
}

定义

定义于头文件 storage_sparse.hpp 中。

模板参数

参数 描述 默认值
I 存储在数组中的索引类型。
T 存储在数组中的对象类型。
ALLOC 一个 STL 分配器 std::allocator

模型

可逆容器。

类型要求

无,除了可逆容器的要求所施加的那些。

公共基类

无。

成员

成员 描述
map_array (ALLOC &a = ALLOC()) 分配一个最多可容纳零个元素的 map_array
map_array (const map_array &c) 复制构造函数。
~map_array () 释放 map_array 本身。
void reserve (size_type capacity) 更改 map_array 的容量。它最多可以容纳 capacity 个元素而无需重新分配。容量可以减少,但要满足 capacity >= size()map_array 的内容会被保留。
size_type size () const 返回 map_array 的大小。
size_type size () const 返回 map_array 的容量。
data_reference operator [] (index_type i) 返回与特定索引关联的元素的引用。如果 map_array 尚未包含此类元素,则 operator[] 会插入默认的 T ()
map_array &operator = (const map_array &a) 赋值运算符。
map_array &assign_temporary (map_array &a) 赋值一个临时对象。可能会更改数组 a
void swap (map_array &a) 交换数组的内容。
std::pairinsert (const value_type &p) p 插入到数组中。如果 p 被插入则返回值的第二部分为 true,如果 p 因为已经存在而未被插入则为 false
iterator insert (iterator it, const value_type &p) p 插入到数组中,使用 it 作为插入位置的提示。
void erase (iterator it) 删除 it 位置的值。
void clear () 清空数组。
const_iterator find (index_type i) const 查找索引为 i 的元素。
iterator find (index_type i) 查找索引为 i 的元素。
const_iterator lower_bound (index_type i) const 查找索引不小于 i 的第一个元素。
iterator lower_bound (index_type i) 查找索引不小于 i 的第一个元素。
const_iterator upper_bound (index_type i) const 查找索引大于 i 的第一个元素。
iterator upper_bound (index_type i) 查找索引大于 i 的第一个元素。
const_iterator begin () const 返回一个指向 map_array 开头的 const_iterator
const_iterator end () const 返回一个指向 map_array 结尾的 const_iterator
iterator begin () 返回一个指向 map_array 开头的 iterator
iterator end () 返回一个指向 map_array 结尾的 iterator
const_reverse_iterator rbegin () const 返回一个指向反向 map_array 开头的 const_reverse_iterator
const_reverse_iterator rend () const 返回一个指向反向 map_array 结尾的 const_reverse_iterator
reverse_iterator rbegin () 返回一个指向反向 map_array 开头的 reverse_iterator
reverse_iterator rend () 返回一个指向反向 map_array 结尾的 reverse_iterator

版权所有 (©) 2000-2002 Joerg Walter, Mathias Koch
使用、修改和分发受 Boost 软件许可 1.0 版的约束。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制副本)。