[翻译] C++ STL容器参考手册 (总册)
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. 成员列表
序列容器
关联容器
posted on 2014-12-26 14:17 Barney.Li 阅读(7404) 评论(0) 编辑 收藏 举报