火龙信奥
  • 首页
  • 课程
  • 题库
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

信息学奥赛CSP第二轮AC必备,STL模板函数

作者: 作者的头像   huolong , 时间:2024-11-09 09:32:19 , 所有人可见, 阅读  28

可变数组vector函数和用法

- v.capacity():返回重新分配空间前可容纳的最大元素数量
- v.reserve(n):扩大容量为 n
- v.at(i):返回索引 i 所标识的元素,对 i 会越界检查
- v[i]:返回索引 i 所标识的元素,和数组用法几乎完全相同,对 i 不越界检查
- v.front():返回第一个元素,不检查第一个元素是否存在
- v.back():返回最后一个元素,不检查最后一个元素是否存
- v.push_back(e):在尾部添加一个元素 e 
- v.insert(pos, e):在 pos 位置插入元素 e ,并返回新元素位置
- v.insert(pos, n, e):在 pos 位置插入 n 个元素 e 
- v.insert(pos, v1.begin, v1.end):在 pos 位置插入区间 v1[begin, end) 的元素
- v.pop_back():移除最后一个元素但不返回最后一个元素
- v.erase(pos):删除 pos 位置的元素,返回下一个元素的位置
- v.erase(begin, end):删除区间[begin, end)内所有元素,返回下一个元素的位置
- v.clear():移除所有元素,清空容器
- v.resize(num):将元素数量改为 num 
- v.resize(num, e):将元素数量改为 num ,默认值是 e

队列queue函数和用法

- queue<int> q;  创建一个空队列
- push(e):向队列末尾添加元素 e
- pop():从队列首部移除元素(不返回元素的值)
- front():获取队首元素(不移除)
- back():获取队尾元素(不移除)
- empty():判断队列是否为空
- size():返回队列中的元素个数

栈stack函数和用法

- stack<int> s;  创建一个空栈
- push(e):向栈顶添加元素 e
- pop():从栈顶移除元素(不返回元素的值)
- top():获取栈顶元素(不移除)
- empty():判断栈是否为空
- size():返回栈中的元素个数

链表list函数和用法

- l.front():返回第一个元素。不检查第一个元素是否存在 
- l.back():返回最后一个元素。不检查最后一个元素是否存在
- l.insert(pos, e):在 pos 位置插入元素 e ,并返回新元素位置 
- l.insert(pos, n, e):在 pos 位置插入 n 个元素 e 
- l.insert(pos, begin, end):在 pos 位置插入区间[begin, end)内所有元素
- l.push_back(e):在尾部添加一个元素 e 
- l.push_front(e):在头部添加一个元素 e 
- l.pop_back():移除最后一个元素,没有返回值
- l.pop_front():移除第一个元素,没有返回值
- l.erase(pos):删除 pos 位置的元素,返回下一个元素的位置
- l.erase(begin, end):删除区间[begin, end)内所有元素,返回下一个元素的位置
- l.remove(val):移除所有值为 val 的元素
- l.remove_if(op):移除所有满足“op(val)==true”的元素
- l.clear():移除所有元素,清空容器
- l.resize(num):将元素数量改为 num
- l.resize(num,e):将元素数量改为 num
- l.unique():移除重复元素
- l.unique(op):移除满足 “op(val) == true” 的重复元素
- l1.splice(pos, l2):将 l2 内的所有元素转移到 l1 的迭代器之前
- l1.splice(pos, l2, l2pos):将 l2 内 l2pos 所指元素转移到 l1 内的 pos 之前
- l1.splice(pos, l2, l2begin, l2end):将 l2 内[l2begin, l2end) 区间内所有元素转移到 l1 的pos之前
- l.sort():以 operator < 为准则对所有元素排序。 
- l.sort(op):以 op(定义“小于”关系)为准则对所有元素排序 
- l1.merge(l2):假设 l1 和 l2 都已排序,将 l2 全部元素转移到 l1 并保证合并后仍是有序表 
- l.reverse():将所有元素反序

集合set函数和用法

- 内部升序排列:set< int, less > s;
- 内部降序排列:set< int, greater > s; 
- s.count(10):返回 s 中值为 10 的具体数目
- s.empty():判断集合是否为空集
- s.size():返回集合的元素数量
- s.insert(e):将 e 插入到 set 中。返回值是一个 pair
- s.insert(begin, end):将区间[begin, end)中的值插入到 s 中
- s.erase(e):将 e 删除
- s.erase(pos):将 pos 处的元素删除
- s.erase(begin, end):将[begin, end)处的元素删除

键值对map函数和用法

- m.at(3) 或 m[3]:返回一个引用,指向键为 3(key = 3)的对应值
- m.count(3):返回 s 中键为 3 的具体数目,但对于 map 来说,返回值不是 0 就是 1
- m.find(3):返回指向键为 3 的元素的迭代器,如果不存在,则返回 m.end()
- m.empty():判断映射是否为空映射
- m.size():返回映射的元素数量
- m.insert(pair):将元素插入到 map 中。pair 的 first 是键,second 是值。 
  可以定义一个 pair:pair<int, string> p(10, "Hello"); 
  也可以用 make_pair() 建立一个 pair:make_pair(10, "Hello");
- m.insert(begin, end):将区间[begin, end)中的值插入到 s 中,该区间应该是 map 类型的
- m.erase(e):将键为 e 的元素删除
- m.erase(pos):将 pos 处的元素删除
- m.erase(begin, end):将[begin, end)处的元素删除

—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com

©2026加盟我们 | 关于我们 | ACM课程 | 常见问题 | 成果墙 | 评测记录 | 浙ICP备2021013995号
在线画图 | OI WIki | 打字练习
火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码