容器是存储其他对象(元素)的集合。它们是作为类模板实现的,这使得作为元素支持的类型具有很大的灵活性。
容器管理其元素的存储空间,并提供成员函数来访问它们,可以直接访问,也可以通过迭代器(引用具有类似指针属性的对象)。
容器复制编程中非常常用的结构:动态数组(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 | 无序的多重图 |
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 |