C++信奥赛(信息学奥林匹克竞赛)中常用的中英文术语对照表

C++信奥赛(信息学奥林匹克竞赛)中常用的中英文术语对照表,涵盖关键字、数据结构、STL容器、算法及常见操作:

一、C++ 关键字

英文关键字 中文含义 示例代码
int 整数 int a = 10;
long long 长整型 long long b = 1e18;
double 双精度浮点数 double pi = 3.14;
bool 布尔值 bool flag = true;
char 字符 char c = 'A';
string 字符串 string s = "hello";
if 如果 if (a > 0) {...}
else 否则 else {...}
for 循环 for (int i=0; i<n; i++)
while 当...时 while (a > 0) {...}
do-while 至少执行一次循环 do {...} while (a>0);
switch 开关 switch (x) {...}
case 情况 case 1: ... break;
default 默认 default: ...
break 跳出循环 break;
continue 继续下一次循环 continue;
return 返回 return 0;
const 常量 const int N = 100;
static 静态 static int cnt = 0;
struct 结构体 struct Node {...};
class class Solution {...};
public 公有 public: ...
private 私有 private: ...
protected 保护 protected: ...
friend 友元 friend class A;
inline 内联 inline int add(a, b)
namespace 命名空间 namespace std {...}
using 使用 using namespace std;
typedef 类型定义 typedef int LL;
template 模板 template <typename T>
typename 类型名 typename T::value_type
virtual 虚函数 virtual void func();
delete 删除 delete p;
new 新建 int* p = new int;

二、数据结构

英文术语 中文名称 描述
array 数组 连续存储的相同类型元素
stack 后进先出(LIFO)
queue 队列 先进先出(FIFO)
priority_queue 优先队列 元素按优先级排序
deque 双端队列 两端均可插入删除
list 链表 双向链表
vector 向量/动态数组 可动态扩展的数组
pair 二元组 存储两个不同类型元素
tuple 元组 存储多个不同类型元素
set 集合 元素唯一,自动排序
multiset 多重集合 元素可重复,自动排序
unordered_set 无序集合 元素唯一,哈希实现
unordered_multiset 无序多重集合 元素可重复,哈希实现
map 映射/字典 键值对,自动排序
multimap 多重映射 键可重复,自动排序
unordered_map 无序映射 键值对,哈希实现
unordered_multimap 无序多重映射 键可重复,哈希实现
tree 层次结构
binary tree 二叉树 每个节点最多两个子节点
binary search tree 二叉搜索树 左子树 < 根 < 右子树
AVL tree AVL树 自平衡二叉搜索树
red-black tree 红黑树 自平衡二叉搜索树
heap 完全二叉树,常用于优先队列
graph 由节点和边组成
adjacency matrix 邻接矩阵 用二维数组表示图
adjacency list 邻接表 用链表表示图

三、STL 容器与操作

英文操作 中文含义 示例代码
push_back() 尾部插入 vec.push_back(10);
push_front() 头部插入 deque.push_front(10);
pop_back() 尾部删除 vec.pop_back();
pop_front() 头部删除 deque.pop_front();
insert() 插入 set.insert(5);
erase() 删除 vec.erase(vec.begin());
clear() 清空 vec.clear();
size() 大小 vec.size();
empty() 判断是否为空 if (vec.empty()) {...}
front() 获取第一个元素 int x = deque.front();
back() 获取最后一个元素 int x = vec.back();
begin() 起始迭代器 auto it = vec.begin();
end() 结束迭代器 auto it = vec.end();
rbegin() 反向起始迭代器 auto rit = vec.rbegin();
rend() 反向结束迭代器 auto rit = vec.rend();
find() 查找 auto it = set.find(5);
count() 统计元素个数 int cnt = map.count(key);
lower_bound() 下界 auto it = vec.lower_bound(5);
upper_bound() 上界 auto it = vec.upper_bound(5);
sort() 排序 sort(arr.begin(), arr.end());
reverse() 反转 reverse(vec.begin(), vec.end());
swap() 交换 swap(a, b);
max_element() 最大值位置 auto it = max_element(arr.begin(), arr.end());
min_element() 最小值位置 auto it = min_element(arr.begin(), arr.end());
accumulate() 求和 int sum = accumulate(arr.begin(), arr.end(), 0);

四、算法与常用操作

英文术语 中文名称 描述
recursion 递归 函数调用自身
iteration 迭代 循环执行
divide and conquer 分治法 分解问题为子问题
dynamic programming 动态规划 用子问题解优化问题
greedy algorithm 贪心算法 每步选择最优解
backtracking 回溯法 尝试所有可能路径
binary search 二分查找 在有序数组中查找元素
depth-first search (DFS) 深度优先搜索 沿路径深入遍历
breadth-first search (BFS) 广度优先搜索 逐层遍历
Dijkstra's algorithm 迪杰斯特拉算法 单源最短路径
Floyd-Warshall algorithm 弗洛伊德算法 多源最短路径
Kruskal's algorithm 克鲁斯卡尔算法 最小生成树
Prim's algorithm 普里姆算法 最小生成树
topological sorting 拓扑排序 有向无环图排序
union-find 并查集 处理不相交集合合并
hash function 哈希函数 将数据映射为固定长度
modulo operation 取模运算 a % b
bit manipulation 位运算 按位与、或、非等操作

五、数学与常用概念

英文术语 中文名称 描述
prime number 质数/素数 大于1且只能被1和自身整除的数
composite number 合数 非质数的大于1的数
greatest common divisor (GCD) 最大公约数 两数的最大公因子
least common multiple (LCM) 最小公倍数 两数的最小公倍数
modular arithmetic 模运算 余数运算
factorial 阶乘 n! = 1×2×…×n
permutation 排列 从n个元素中取k个排列
combination 组合 从n个元素中取k个组合
Catalan number 卡特兰数 组合数学中的数列
Fibonacci sequence 斐波那契数列 F(n) = F(n-1) + F(n-2)
probability 概率 事件发生的可能性
expectation 期望值 随机变量的平均值
posted @ 2025-07-12 15:13  kkman2000  阅读(91)  评论(0)    收藏  举报