Skip to content

附录 C · 术语中英对照表 ​

本附录汇总本书涉及的 STL 术语、容器名、迭代器类型与常见英文报错信息,供阅读英文资料与调试时对照。


一、STL 整体概念 ​

中文英文说明
标准模板库STL(Standard Template Library)C++ 的通用数据结构与算法库
泛型编程Generic Programming用模板编写与类型无关的代码
容器Container存储数据的对象,如 vector、set
迭代器Iterator遍历容器元素的"泛化指针"
算法Algorithm与容器解耦的通用操作,如 sort、find
函数对象 / 仿函数Functor / Function Object重载了 operator() 的对象
适配器Adapter在已有容器上封装出新接口,如 stack
分配器Allocator负责内存分配与释放的组件
模板Template编译期生成代码的机制
实例化Instantiation模板生成具体类型的过程

二、容器分类术语 ​

中文英文包含
序列式容器Sequence Containervector、list、deque、array、forward_list
关联式容器Associative Containerset、multiset、map、multimap(有序,红黑树)
无序关联式容器Unordered Associative Containerunordered_set、unordered_map 等(哈希表)
容器适配器Container Adapterstack、queue、priority_queue
近容器Near Container数组、string、bitset 等
动态数组Dynamic Arrayvector
双向链表Doubly Linked Listlist
双端队列Double-ended Queuedeque
红黑树Red-Black Treeset / map 的底层
哈希表Hash Tableunordered_* 的底层
二叉堆Binary Heappriority_queue 的底层
大顶堆 / 小顶堆Max Heap / Min Heap堆顶为最大 / 最小值
栈StackLIFO
队列QueueFIFO
优先队列Priority Queue按优先级出队
键值对Key-Value Pairpair / map 的元素

三、迭代器类型 ​

中文英文支持的操作典型容器
输入迭代器Input Iterator只读,单向 ++istream_iterator
输出迭代器Output Iterator只写,单向 ++ostream_iterator
前向迭代器Forward Iterator读写,单向 ++forward_list
双向迭代器Bidirectional Iterator读写,++ 与 --list、set/map 系列
随机访问迭代器Random Access Iterator读写,+n、-n、[]、比较vector、deque、数组

记忆:算法要求的迭代器等级决定了它能用于哪些容器。例如 sort 需要随机访问迭代器,因此不能排 list。


四、常用操作术语 ​

中文英文中文英文
插入insert / push删除erase / pop
查找find / search计数count
排序sort去重unique
反转reverse交换swap
清空clear判空empty
容量capacity预留reserve
重设大小resize遍历traverse / iterate
上滤(堆)sift up / percolate up下滤(堆)sift down / percolate down
扩容reallocate迭代器失效iterator invalidation
均摊复杂度amortized complexity最坏情况worst case
字典序lexicographical order比较器comparator

五、常见英文报错 → 中文对照 ​

英文报错(关键词)中文含义常见原因
no matching function for call to找不到匹配的函数参数类型或个数不对
no member named 'xxx'没有名为 xxx 的成员该容器没有这个成员函数(如对 stack 用 clear)
'xxx' is not a member of 'std'std 中没有 xxx拼错名字或漏了头文件
invalid use of incomplete type使用了未定义类型只声明未定义,或头文件不全
cannot bind non-const lvalue reference不能绑定非常量左值引用传了临时对象给非 const 引用参数
segmentation fault段错误(访问非法内存)越界访问、空容器 top()、解引用 end()
bad_alloc内存分配失败申请空间过大
out_of_range越界at() 下标越界(这是 at 的唯一优势)
map::atmap 的 at 抛出越界key 不存在(不像 [] 会插入)
expression cannot be used as a function表达式不能当函数用少了括号或对象名被变量遮蔽
expected ';' before缺分号漏写分号或括号不匹配
undeclared identifier未声明的标识符拼错变量名或漏了 using namespace std;
cannot convert 'xxx' to 'yyy'无法类型转换类型不匹配,如拿迭代器当下标
no operator '<<' matches没有匹配的 << 运算符试图直接输出 pair / 自定义结构
template argument deduction failed模板参数推导失败类型信息不足,需显式指定

看报错的三条口诀:

  1. 先看第一行错误行号,编译器后续报错常是连锁反应;
  2. no member named 说明用错了容器,回去查该容器的成员函数表(附录 B 第四节);
  3. 段错误先查两件事:容器是否为空、下标是否越界。

术语以本书正文用法为准;英文拼写以 C++ 标准库官方写法为准。

百炼成钢,融会贯通