CSP信奥赛C++常用系统函数汇总

复制代码
# CSP信奥赛C++常用系统函数汇总

## 一、输入输出函数

### 1. cin / cout(`<iostream>`)
```cpp
int x; 
cin >> x;        // 输入
cout << x << endl;// 输出

优化ios::sync_with_stdio(false); 可提升速度

2. scanf() / printf()(<cstdio>

复制代码
int x;
scanf("%d", &x); 
printf("%d\n", x);

二、数学函数(<cmath>

|-------------|--------|--------------------|
| 函数 | 功能 | 示例 |
| sqrt(x) | 平方根 | sqrt(9.0) → 3.0 |
| pow(a, b) | a的b次方 | pow(2,3) → 8.0 |
| abs(x) | 整型绝对值 | abs(-5) → 5 |
| fabs(x) | 浮点型绝对值 | fabs(-3.14) → 3.14 |
| ceil(x) | 向上取整 | ceil(2.3) → 3.0 |
| floor(x) | 向下取整 | floor(2.9) → 2.0 |
| round(x) | 四舍五入 | round(2.5) → 3.0 |
| __gcd(a, b) | 最大公约数 | __gcd(12,18) → 6 |

三、字符串处理

1. C++字符串(<string>

|------------------|---------|-----------------------------|
| 方法/函数 | 功能 | 示例 |
| stoi(str) | 字符串转整数 | stoi("123") → 123 |
| substr(pos, len) | 截取子串 | "Hello".substr(1,3) → "ell" |
| find(str) | 查找子串位置 | "abcde".find("cd") → 2 |
| str.length() | 获取字符串长度 | "test".length() → 4 |

2. C风格字符串(<cstring>

|-------------------|-------|-----------------------|
| 函数 | 功能 | 示例 |
| strlen(s) | 字符串长度 | strlen("abc") → 3 |
| strcmp(a, b) | 字符串比较 | strcmp("a", "b") → 负数 |
| strcpy(dest, src) | 复制字符串 | strcpy(buf, "hello") |

四、STL算法(<algorithm>

|-----------------------|---------|-------------------------------|
| 函数 | 功能 | 示例 |
| sort(begin, end) | 快速排序 | sort(arr, arr+5); |
| swap(a, b) | 交换变量 | swap(x, y); |
| reverse(begin, end) | 反转序列 | reverse(s.begin(), s.end()); |
| max(a, b) / min(a, b) | 最值 | max(3,5) → 5 |
| next_permutation(...) | 生成下一个排列 | next_permutation(arr, arr+3); |

五、容器操作

1. vector(<vector>

复制代码
vector<int> v;
v.push_back(10);    // 添加元素
v.pop_back();       // 删除末尾元素
v.size();           // 获取元素个数

2. queue(<queue>

复制代码
queue<int> q;
q.push(10);         // 入队
q.pop();            // 出队
q.front();          // 队首元素

3. stack(<stack>

复制代码
stack<int> s;
s.push(10);         // 压栈
s.pop();            // 弹栈
s.top();            // 栈顶元素

六、其他实用函数

|-------------------------|-------------|--------------|------------------------------|
| 函数/方法 | 头文件 | 功能 | 示例 |
| memset(arr, val, size) | <cstring> | 内存初始化(按字节) | memset(arr, 0, sizeof(arr)); |
| tolower(c) / toupper(c) | <cctype> | 字符大小写转换 | toupper('a') → 'A' |
| clock() | <ctime> | 获取程序运行时间(ms) | clock() / CLOCKS_PER_SEC |

七、完整汇总表格

|-------|------------------------|---------|---------------|------------------------------|
| 分类 | 函数/方法 | 功能 | 头文件 | 示例 |
| 输入输出 | cin / cout | 标准输入输出 | <iostream> | cin >> x; cout << x; |
| | scanf() / printf() | 格式化输入输出 | <cstdio> | scanf("%d", &x); |
| 数学函数 | sqrt(x) | 平方根 | <cmath> | sqrt(9.0) → 3.0 |
| | pow(a, b) | 幂运算 | <cmath> | pow(2,3) → 8.0 |
| | __gcd(a, b) | 最大公约数 | <algorithm> | __gcd(12,18) → 6 |
| 字符串处理 | stoi(str) | 字符串转整数 | <string> | stoi("123") → 123 |
| | str.substr(pos, len) | 截取子串 | <string> | "abcde".substr(1,3) → "bcd" |
| | strcmp(a, b) | 字符串比较 | <cstring> | strcmp("a", "b") → 负数 |
| STL算法 | sort(begin, end) | 快速排序 | <algorithm> | sort(v.begin(), v.end()); |
| | reverse(begin, end) | 反转序列 | <algorithm> | reverse(s.begin(), s.end()); |
| 容器操作 | vector::push_back() | 添加元素 | <vector> | v.push_back(10); |
| | queue::front() | 获取队首元素 | <queue> | q.front(); |
| 其他 | memset(arr, val, size) | 内存初始化 | <cstring> | memset(arr, 0, sizeof(arr)); |
| | tolower(c) | 转小写字符 | <cctype> | tolower('A') → 'a' |

注意事项

  1. 浮点精度pow(2,3) 返回 double 类型,整数运算建议手动计算
  2. 排序自定义sort() 可通过自定义比较函数实现复杂排序
  3. 内存安全memset 的第二个参数是按字节赋值,仅适合初始化为 0 或 -1
  4. 竞赛优化 :关闭流同步 ios::sync_with_stdio(false); 可提升输入输出速度
相关推荐
楼田莉子1 小时前
C++17新特性:__had_include/属性/求值顺序规则
开发语言·c++·后端
h_a_o777oah3 小时前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
雪度娃娃4 小时前
Asio异步读写——连接的安全回收问题
开发语言·c++·安全·php
不吃土豆的马铃薯4 小时前
Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
linux·服务器·开发语言·前端·c++
liulilittle5 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯
咩咦6 小时前
C++学习笔记26:static 静态成员
c++·学习笔记·static·静态成员变量·静态成员·静态成员函数
秋落风声6 小时前
内存池仿Nginx C++实现
c++·nginx
小白要努力sgy6 小时前
实时通信框架CyberRT
c++·自动驾驶·实时通讯
hansang_IR6 小时前
【记录】loj2967「COCI 2010.03.06」PROGRAM
c++·算法
霍霍的袁7 小时前
【C++初阶】缺省参数(默认参数)详细讲解
开发语言·c++·算法