C++算法竞赛常用函数详解

输入输出相关

iostream - 标准输入输出

  • cin - 标准输入流对象,用于从控制台读取数据

  • cout - 标准输出流对象,用于向控制台输出数据

  • endl - 插入换行符并刷新输出缓冲区

iomanip - 输入输出格式化

  • setw(n) - 设置下一个输出字段的宽度为n个字符

  • setprecision(n) - 设置浮点数输出的精度(小数位数)

  • fixed - 以固定小数点格式显示浮点数

  • scientific - 以科学计数法格式显示浮点数

数学计算相关

cmath - 数学函数

  • sqrt(x) - 计算x的平方根

  • pow(x, y) - 计算x的y次幂

  • abs(x) / fabs(x) - 计算x的绝对值(整数/浮点数)

  • floor(x) - 向下取整,返回不大于x的最大整数

  • ceil(x) - 向上取整,返回不小于x的最小整数

  • round(x) - 四舍五入到最接近的整数

  • sin(x) / cos(x) / tan(x) - 三角函数(参数为弧度)

  • log(x) - 自然对数(以e为底)

  • log10(x) - 常用对数(以10为底)

  • exp(x) - 指数函数e^x

algorithm - 算法函数

  • sort(begin, end) - 对范围[begin, end)内的元素进行升序排序

  • reverse(begin, end) - 反转范围[begin, end)内的元素顺序

  • max(a, b) / min(a, b) - 返回两个值中的较大值/较小值

  • swap(a, b) - 交换两个变量的值

  • unique(begin, end) - 去除相邻的重复元素,返回新的逻辑结尾

  • next_permutation(begin, end) - 生成下一个排列

  • lower_bound(begin, end, value) - 返回第一个不小于value的元素位置

  • upper_bound(begin, end, value) - 返回第一个大于value的元素位置

  • accumulate(begin, end, init) - 计算范围内元素的累加和

numeric - 数值算法

  • iota(begin, end, value) - 用连续的递增值填充范围

  • gcd(a, b) - 计算最大公约数(C++17)

  • lcm(a, b) - 计算最小公倍数(C++17)

数据结构相关

vector - 动态数组

  • push_back(value) - 在末尾添加元素

  • pop_back() - 删除末尾元素

  • size() - 返回元素个数

  • empty() - 判断是否为空

  • insert(position, value) - 在指定位置插入元素

  • erase(position) - 删除指定位置的元素

  • begin() / end() - 返回指向开头/结尾的迭代器

string - 字符串

  • length() / size() - 返回字符串长度

  • substr(pos, len) - 提取从pos开始长度为len的子串

  • find(str) - 查找子串,返回位置或string::npos

  • append(str) - 在末尾追加字符串

  • stoi(str) / stol(str) - 将字符串转换为整数/长整数

  • to_string(value) - 将数值转换为字符串

queue - 队列

  • queue<T> - 先进先出队列

  • priority_queue<T> - 优先队列(默认最大堆)

  • push(value) - 入队

  • pop() - 出队

  • front() - 访问队首元素

  • back() - 访问队尾元素

stack - 栈

  • push(value) - 入栈

  • pop() - 出栈

  • top() - 访问栈顶元素

set - 集合

  • insert(value) - 插入元素

  • erase(value) - 删除元素

  • find(value) - 查找元素,返回迭代器

  • count(value) - 统计元素出现次数(0或1)

  • lower_bound(value) / upper_bound(value) - 边界查找

map - 映射

  • operator[key] - 访问或插入键对应的值

  • insert({key, value}) - 插入键值对

  • find(key) - 查找键,返回迭代器

  • count(key) - 统计键出现次数(0或1)

bitset - 位集

  • set() - 将所有位设为1

  • reset() - 将所有位设为0

  • flip() - 翻转所有位

  • test(pos) - 测试指定位是否为1

  • count() - 统计1的个数

实用工具

utility - 实用工具

  • pair<T1, T2> - 存储两个值的模板类

  • make_pair(v1, v2) - 创建pair对象

functional - 函数对象

  • greater<T>() - 大于比较器,用于创建最小堆等

  • less<T>() - 小于比较器(默认)

ctime - 时间函数

  • time(0) - 获取当前时间戳

  • clock() - 获取程序运行的CPU时间

cstdlib - 标准库函数

  • rand() - 生成伪随机数

  • srand(seed) - 设置随机数种子

  • qsort() - C风格快速排序

cstring - C字符串函数

  • strlen(str) - 计算字符串长度

  • strcmp(str1, str2) - 比较两个字符串

  • memset(ptr, value, n) - 将内存块设置为指定值

  • memcpy(dest, src, n) - 复制内存块

类型限制

climits - 整数类型限制

  • INT_MAX / INT_MIN - int类型的最大值/最小值

  • LLONG_MAX / LLONG_MIN - long long类型的最大值/最小值

cfloat - 浮点类型限制

  • DBL_MAX / DBL_MIN - double类型的最大值/最小值

  • 本内容为AI生成

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值