Home C&C++函数库 c++ 语法 程序源码 Linux C库

容器


标准容器

容器是存储其他对象(元素)的集合。它们是作为类模板实现的,这使得作为元素支持的类型具有很大的灵活性。

容器管理其元素的存储空间,并提供成员函数来访问它们,可以直接访问,也可以通过迭代器(引用具有类似指针属性的对象)。

容器复制编程中非常常用的结构:动态数组(vector)、队列(queue)、栈(stack)、堆(priority_queue)、链表(list)、树(set)、关联数组(map)……

许多容器都有几个共同的成员函数,并且共享功能。为特定需求决定使用哪种类型的容器, 通常不仅取决于容器提供的功能,还取决于其某些成员的效率(复杂性)。 对于序列容器来说尤其如此,它们在插入/删除元素和访问元素之间提供了不同的复杂性。

Stack, queue和priority_queue被设计为容器适配器。容器适配器不是完整的容器类, 而是提供依赖于容器类(如deque或list)对象的特定接口来处理元素的类。 底层容器被封装成这样一种方式:容器适配器的成员可以独立于所使用的底层容器类来访问其元素。

☞ 容器类模板



序列式容器:

array 数组类
vector 向量
deque 双端队列
forward_list 单链表
list 链表

容器适配器:

stack 后进先出(LIFO)栈
queue 先进先出(FIFO)队列
priority_queue 优先队列

关联式容器:

set 集合
multiset 多重Set
map 映射
multimap 多重映射

无序关联式容器

unordered_set 无序的 Set
unordered_multiset 无序的多重Set
unordered_map 无序的图
unordered_multimap 无序的多重图

其它:
有两个类模板与容器共享某些属性,有时也用它们分类:bitset和valarray。

☞ 成员地图



这是不同容器中不同成员函数的比较图:
C++98 C++98开始
C++11 C++11新特性

序列式容器:

头文件 <array> <vector> <deque> <forward_list> <list>
成员 array vector deque forward_list list
构造函数 隐式 vector deque forward_list list
析构函数 隐式 ~vector ~deque ~forward_list ~list
等号重载 隐式 operator= operator= operator= operator=
迭代器iterators begin begin begin begin begin
before_begin
begin
end end end end end end
rbegin rbegin rbegin rbegin rbegin
rend rend rend rend rend
常量迭代器 cbegin cbegin cbegin cbegin cbegin
cbefore_begin
cbegin
cend cend cend cend cend cend
crbegin crbegin crbegin crbegin crbegin
crend crend crend crend crend
容量 size size size size size
max_size max_size max_size max_size max_size max_size
empty empty empty empty empty empty
resize resize resize resize resize
shrink_to_fit shrink_to_fit shrink_to_fit
capacity capacity
reserve reserve
元素访问 front front front front front front
back back back back back
operator[] operator[] operator[] operator[]
at at at at
修改 assign assign assign assign assign
emplace emplace emplace emplace_after emplace
insert insert insert insert_after insert
erase erase erase erase_after erase
emplace_back emplace_back emplace_back emplace_back
push_back push_back push_back push_back
pop_back pop_back pop_back pop_back
emplace_front emplace_front emplace_front emplace_front
push_front push_front push_front push_front
pop_front pop_front pop_front pop_front
clear clear clear clear clear
swap swap swap swap swap swap
表操作 splice splice_after splice
remove remove remove
remove_if remove_if remove_if
unique unique unique
merge merge merge
sort sort sort
reverse reverse reverse
观察者 get_allocator get_allocator get_allocator get_allocator get_allocator
data data data

关联式容器:

头文件 <set> <map> <unordered_set> <unordered_map>
成员 set multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap
构造函数 set multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap
析构函数 ~set ~multiset ~map ~multimap ~unordered_set ~unordered_multiset ~unordered_map ~unordered_multimap
赋值 operator= operator= operator= operator= operator= operator= operator= operator=
迭代器
iterators
begin begin begin begin begin begin begin begin begin
end end end end end end end end end
rbegin rbegin rbegin rbegin rbegin
rend rend rend rend rend
常量迭代器
const iterators
cbegin cbegin cbegin cbegin cbegin cbegin cbegin cbegin cbegin
cend cend cend cend cend cend cend cend cend
crbegin crbegin crbegin crbegin crbegin
crend crend crend crend crend
容量 size size size size size size size size size
max_size max_size max_size max_size max_size max_size max_size max_size max_size
empty empty empty empty empty empty empty empty empty
reserve reserve reserve reserve reserve
元素访问 at at at
operator[] operator[] operator[]
修改 emplace emplace emplace emplace emplace emplace emplace emplace emplace
emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint emplace_hint
insert insert insert insert insert insert insert insert insert
erase erase erase erase erase erase erase erase erase
clear clear clear clear clear clear clear clear clear
swap swap swap swap swap swap swap swap swap
操作 count count count count count count count count count
find find find find find find find find find
equal_range equal_range equal_range equal_range equal_range equal_range equal_range equal_range equal_range
lower_bound lower_bound lower_bound lower_bound lower_bound
upper_bound upper_bound upper_bound upper_bound upper_bound
观察者 get_allocator get_allocator get_allocator get_allocator get_allocator get_allocator get_allocator get_allocator get_allocator
key_comp key_comp key_comp key_comp key_comp
value_comp value_comp value_comp value_comp value_comp
key_eq key_eq key_eq key_eq key_eq
hash_function hash_function hash_function hash_function hash_function
bucket bucket bucket bucket bucket
bucket_count bucket_count bucket_count bucket_count bucket_count
bucket_size bucket_size bucket_size bucket_size bucket_size
max_buc
-ket_count
max_bucket
_count
max_bucket_count max_buc
-ket_count
max_bucket_count
哈希 rehash rehash rehash rehash rehash
load_factor load_factor load_factor load_factor load_factor
max_load_factor max_load_factor max_load_factor max_load_factor max_load_factor
联系我们 免责声明 关于CandCplus 网站地图