[翻译] C++ STL容器参考手册 (总册)

时间:2021-07-07 16:42:17

1. 写在最前面

这将是博主的第一篇技术博客,思考再三决定从翻译开始。这将是一个系列的博客,由不同的章节组成,章节之间由超链接联系,开发过程将使用增量式开发,每次完成一个章节。本篇是本系列的总册,提供了所有子章节的超链接,另外所有的子章节也都将提供链接返回到本篇。
 

2. 本系列的目录结构

第三章 <forward_list>
第四章 <list>
第五章 <map>
第六章 <queue>
第七章 <set>
第八章 <stack>
第九章 <unordered_map>
第十章 <unordered_set>
第十一章 <vector>
 

3. 专有名词的翻译规范

专用名词的翻译在不同的资料中会有较大的差异,本文遵循如下的翻译规范:
allocator 分配器
array 数组容器(当主语代表数组容器时)/数组(当主语代表普通数组时)
deque 双向队列
forward list 单链表
list 链表
map 映射
queue 队列
set 集合
stack 栈
unordered map 无序映射
unordered set 无序集合
vector 动态数组
priority queue 优先队列
 
 

4. 本系列的原文

5. 标准容器

容器,正如其字面意思,是存储了一组对象的数据集合(这里的每个对象都是这个容器的元素),当然了这里的容器本身也是一个对象。所有的容器都被设计成为模板类,这样一来容器可存储的元素类型就具有非常大的灵活性。

容器负责管理自身用以存储元素的物理空间,并且提供了成员函数来访问这些元素 -- 有直接访问的方式也有通过迭代器(具有类似指针的属性)访问的方式。

容器实现了程序设计中非常常见的结构:动态数组(vector),队列(queue),栈(stack),堆(priority_queue),链表(list),树(set),关联数组(map)...

许多不同的容器具有相同的成员函数,并且共享一些功能。在决定使用哪一种具体的容器时,不仅仅需要考虑到容器提供的功能,同时也要考虑到访问其成员的效率(复杂度)。尤其是对于序列容器,这些容器在插入/删除元素与访问元素的复杂度之间有着不同的权衡。

stack, queue以及priority_queue被实现为容器适配器。容器适配器并不是完整的容器,而是一个提供了某些特定接口的类,容器适配器将一个容器封装起来,然后就可以通过容器适配器提供的这些接口来访问这个容器的元素。

6. 容器模板类

序列容器

array (c++11 only) 数组类 (模板类)
vector 动态数组 (模板类)
deque 双端队列 (模板类)
forward_list 单链表 (模板类)
list (c++11 only) 链表 (模板类)

容器适配器

stack 先入后出栈 (模板类)
queue 先入先出队列 (模板类)
priority_queue 优先队列 (模板类)

关联容器

set 集合 (模板类)
multiset 多重集合 (模板类)
map 映射 (模板类)
multimap 多重影射 (模板类)

无序关联容器

unordered_set 无序集合 (模板类)
unordered_multiset 无序多重集合 (模板类)
unordered_map 无序映射 (模板类)
unordered_multimap 无序多重映射 (模板类)

7. 成员列表

序列容器
Headers <array> <vector> <deque> <forward_list> <list>
Members array vector deque forward_list list
  constructor implicit vector deque forward_list list
destructor implicit ~vector ~deque ~forward_list ~list
operator= implicit 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
const iterators begin cbegin cbegin cbegin cbegin
cbefore_begin
cbegin
cend cend cend cend cend cend
crbegin crbegin crbegin crbegin   crbegin
crend crend crend crend   crend
capacity 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      
element access front front front front front front
back back back back   back
operator[] operator[] operator[] operator[]    
at at at at    
modifiers 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
list operations 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
observers get_allocator   get_allocator get_allocator get_allocator get_allocator
data data data      

关联容器

Headers <set> <map> <unordered_set> <unordered_map>
Members set multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap
  constructor set multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap
destructor ~set ~multiset ~map ~multimap ~unordered_set ~unordered_multiset ~unordered_map ~unordered_multimap
assignment 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        
capacity 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
element access at     at       at  
operator[]     operator[]       operator[]  
modifiers 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
operations 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        
observers 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
buckets 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_bucket_count         max_bucket_count max_bucket_count max_bucket_count max_bucket_count
hash policy 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