容器
STL 包含了序列容器(sequence containers)與關聯容器(associative containers)。 序列容器包含了 vector, deque 和 list。至於關聯容器則有 set,multiset, map 和 multimap。
資料容器 | 描述 |
---|---|
有序/Lists - 有序集 | |
vector | C++提供了內建陣列的替代型態vector,vector 可以如同陣列一樣的存取方式,例如使用下標(Subscript)運算子,並記得自己的長度資訊(size),您也可以使用物件的方式來存取vector(push、pop)。使用vector可以輕易地定義二維可調整型陣列。要使用vector,必須含入vector表頭檔。 |
list | list容器是一個有序(Ordered)的資料結構(循序容器),其特性主要是實作串列資料結構。具有雙向鏈結作用。 |
deque (双端队列) | 一个在固定的时间分别往开头或结尾插入或删除的向量,但是它在修改之后缺乏迭代器有效性的保障。 |
Associative containers - 无序集 | |
set | |
multiset | 跟set具有相同功能,但允許重複的元素。 |
map | |
multimap | 跟map具有相同功能,但允許重複的鍵值。 |
hash_set hash_multiset hash_map hash_multimap | 分别类似于集合,多集合,映射,或者多重映射。但是,使用哈希表实现。它的键(Keys)没有把排序,但是必须存在一个对键值的哈希函数。这些容器并不是C++标准库的部分,但包含在SGI的STL扩展中,并且包含在公共类库,如在GNU C++类库的__gnu_cxx 空间。它们可能在未来包含于C++标准。 |
其他类型的容器 | |
bitset | 存储系列位类似的固定大小的布尔向量。实现按位运算,缺乏迭代器,不是序列。 |
valarray | 另外像数组一样向量的C,为高速数字设计但以一些简化编程和一般用途的开支做为代价。它有许多功能,可以在理想地符合在向量超级计算机和消费级的标量处理器的SIMD单元里的向量处理器,同时也减轻在标量计算机向量数学规划,甚至在标量计算机中。 |