您的位置:首页 > 编程语言 > C语言/C++

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

2014-12-26 14:17 357 查看

1. 写在最前面

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

2. 本系列的目录结构

总册
第一章 <array>
第二章 <deque>
第三章 <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. 本系列的原文

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
rbeginrbeginrbeginrbeginrbegin
rendrendrendrendrend
const iteratorsbegincbegincbegincbegincbegin
cbefore_begin
cbegin
cendcendcendcendcendcend
crbegincrbegincrbegincrbegincrbegin
crendcrendcrendcrendcrend
capacitysizesizesizesizesize
max_sizemax_sizemax_sizemax_sizemax_sizemax_size
emptyemptyemptyemptyemptyempty
resizeresizeresizeresizeresize
shrink_to_fitshrink_to_fitshrink_to_fit
capacitycapacity
reservereserve
element accessfrontfrontfrontfrontfrontfront
backbackbackbackback
operator[]]operator[]]operator[]]operator[]
atatatat
modifiersassignassignassignassignassign
emplaceemplaceemplaceemplace_afteremplace
insertinsertinsertinsert_afterinsert
eraseeraseeraseerase_aftererase
emplace_backemplace_backemplace_backemplace_back
push_backpush_backpush_backpush_back
pop_backpop_backpop_backpop_back
emplace_frontemplace_frontemplace_frontemplace_front
push_frontpush_frontpush_frontpush_front
pop_frontpop_frontpop_frontpop_front
clearclearclearclearclear
swapswapswapswapswapswap
list operationssplicesplice_aftersplice
removeremoveremove
remove_ifremove_ifremove_if
uniqueuniqueunique
mergemergemerge
sortsortsort
reversereversereverse
observersget_allocatorget_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
reservereservereservereservereserve
element accessatatat
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_eqkey_eqkey_eqkey_eqkey_eq
hash_functionhash_functionhash_functionhash_functionhash_function
bucketsbucketbucketbucketbucketbucket
bucket_countbucket_countbucket_countbucket_countbucket_count
bucket_sizebucket_sizebucket_sizebucket_sizebucket_size
max_bucket_countmax_bucket_countmax_bucket_countmax_bucket_countmax_bucket_count
hash policyrehashrehashrehashrehashrehash
load_factorload_factorload_factorload_factorload_factor
max_load_factormax_load_factormax_load_factormax_load_factormax_load_factor
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: