常用函数速查
按头文件分类的函数清单,比赛时想不起来就翻这里。函数名在代码里用 引号 里的写法。
string 字符串成员 <string>
| 函数 | 作用 / 示例 |
s.size() / s.length() | 长度。"abc".size() == 3 |
s.empty() | 是否为空字符串 |
s.substr(pos, len) | 截取子串。"abcdef".substr(1,3) == "bcd" |
s.find(t) | 查找子串位置,找不到返回 string::npos |
s.insert(pos, t) | 在 pos 处插入子串 |
s.erase(pos, len) | 删除从 pos 起 len 个字符 |
s.push_back(c) | 末尾追加一个字符 |
stoi(s) / stoll(s) | 字符串转 int / long long |
to_string(x) | 数字转字符串 |
string s = "hello world";
size_t p = s.find("world"); // p == 6
if (p != string::npos) { ... } // 判断是否找到
int x = stoi("123") + 1; // 124
string t = to_string(x); // "124"
cmath 数学函数 <cmath>
| 函数 | 作用 / 示例 |
abs(x) | 整数绝对值(<cstdlib>);浮点用 fabs |
sqrt(x) | 平方根。sqrt(16) == 4 |
pow(a, b) | a 的 b 次方(浮点,注意精度) |
floor(x) / ceil(x) | 向下 / 向上取整。ceil(2.1)==3 |
round(x) | 四舍五入。round(2.5)==3 |
log(x) | 自然对数;log2(x) 以 2 为底 |
min(a,b) / max(a,b) | 较小 / 较大值 |
fmin / fmax | 浮点版 min / max |
double r = sqrt(25.0); // 5.0
int up = ceil(7.0 / 2.0); // 4(向上取整做除法)
int lo = 7 / 2; // 3(整数除法直接截断)
cout << fixed << setprecision(2) << 3.14159;
algorithm 算法 <algorithm>
| 函数 | 作用 |
sort(begin, end) | 排序(默认升序) |
reverse(begin, end) | 反转区间 |
swap(a, b) | 交换两个变量 |
fill(begin, end, v) | 区间全部赋值为 v |
min_element / max_element | 最小 / 最大元素位置 |
count(begin, end, v) | 统计 v 出现次数 |
binary_search(begin, end, v) | 二分查找是否存在(需已排序) |
cctype 字符判断 <cctype>
| 函数 | 作用 |
isalpha(c) | 是否字母(a-z / A-Z) |
isdigit(c) | 是否数字(0-9) |
isupper(c) / islower(c) | 是否大写 / 小写 |
toupper(c) / tolower(c) | 转大写 / 小写 |
isalnum(c) | 是否字母或数字 |
isspace(c) | 是否空白(空格 / 换行 / Tab) |
char c = 'A';
if (isalpha(c)) c = tolower(c); // 'a'
int cnt = 0;
for (char ch : s) if (isdigit(ch)) cnt++;