首页 > 代码库 > [翻译] C++ STL容器参考手册 (总册)

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

1. 写在最前面

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

2. 本系列的目录结构

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

3. 专有名词的翻译规范

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

4. 本系列的原文

http://www.cplusplus.com/reference/stl/

 

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>
Membersarrayvectordequeforward_listlist
 constructorimplicitvectordequeforward_listlist
destructorimplicit~vector~deque~forward_list~list
operator=implicitoperator=operator=operator=operator=
iteratorsbeginbeginbeginbeginbegin
before_begin
begin
endendendendendend
rbeginrbeginrbeginrbegin rbegin
rendrendrendrend rend
const iteratorsbegincbegincbegincbegincbegin
cbefore_begin
cbegin
cendcendcendcendcendcend
crbegincrbegincrbegincrbegin crbegin
crendcrendcrendcrend crend
capacitysizesizesizesize size
max_sizemax_sizemax_sizemax_sizemax_sizemax_size
emptyemptyemptyemptyemptyempty
resize resizeresizeresizeresize
shrink_to_fit shrink_to_fitshrink_to_fit  
capacity capacity   
reserve reserve   
element accessfrontfrontfrontfrontfrontfront
backbackbackback back
operator[]operator[]operator[]operator[]  
atatatat  
modifiersassign assignassignassignassign
emplace emplaceemplaceemplace_afteremplace
insert insertinsertinsert_afterinsert
erase eraseeraseerase_aftererase
emplace_back emplace_backemplace_back emplace_back
push_back push_backpush_back push_back
pop_back pop_backpop_back pop_back
emplace_front  emplace_frontemplace_frontemplace_front
push_front  push_frontpush_frontpush_front
pop_front  pop_frontpop_frontpop_front
clear clearclearclearclear
swapswapswapswapswapswap
list operationssplice   splice_aftersplice
remove   removeremove
remove_if   remove_ifremove_if
unique   uniqueunique
merge   mergemerge
sort   sortsort
reverse   reversereverse
observersget_allocator get_allocatorget_allocatorget_allocatorget_allocator
datadatadata   

关联容器

Headers<set><map><unordered_set><unordered_map>
Memberssetmultisetmapmultimapunordered_setunordered_multisetunordered_mapunordered_multimap
 constructorsetmultisetmapmultimapunordered_setunordered_multisetunordered_mapunordered_multimap
destructor~set~multiset~map~multimap~unordered_set~unordered_multiset~unordered_map~unordered_multimap
assignmentoperator=operator=operator=operator=operator=operator=operator=operator=
iteratorsbeginbeginbeginbeginbeginbeginbeginbeginbegin
endendendendendendendendend
rbeginrbeginrbeginrbeginrbegin    
rendrendrendrendrend    
const iteratorscbegincbegincbegincbegincbegincbegincbegincbegincbegin
cendcendcendcendcendcendcendcendcend
crbegincrbegincrbegincrbegincrbegin    
crendcrendcrendcrendcrend    
capacitysizesizesizesizesizesizesizesizesize
max_sizemax_sizemax_sizemax_sizemax_sizemax_sizemax_sizemax_sizemax_size
emptyemptyemptyemptyemptyemptyemptyemptyempty
reserve    reservereservereservereserve
element accessat  at   at 
operator[]  operator[]   operator[] 
modifiersemplaceemplaceemplaceemplaceemplaceemplaceemplaceemplaceemplace
emplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hint
insertinsertinsertinsertinsertinsertinsertinsertinsert
eraseeraseeraseeraseeraseeraseeraseeraseerase
clearclearclearclearclearclearclearclearclear
swapswapswapswapswapswapswapswapswap
operationscountcountcountcountcountcountcountcountcount
findfindfindfindfindfindfindfindfind
equal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_range
lower_boundlower_boundlower_boundlower_boundlower_bound    
upper_boundupper_boundupper_boundupper_boundupper_bound    
observersget_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocator
key_compkey_compkey_compkey_compkey_comp    
value_compvalue_compvalue_compvalue_compvalue_comp    
key_eq    key_eqkey_eqkey_eqkey_eq
hash_function    hash_functionhash_functionhash_functionhash_function
bucketsbucket    bucketbucketbucketbucket
bucket_count    bucket_countbucket_countbucket_countbucket_count
bucket_size    bucket_sizebucket_sizebucket_sizebucket_size
max_bucket_count    max_bucket_countmax_bucket_countmax_bucket_countmax_bucket_count
hash policyrehash    rehashrehashrehashrehash
load_factor    load_factorload_factorload_factorload_factor
max_load_factor    max_load_factormax_load_factormax_load_factormax_load_factor

 

 

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