唐巧的博客

CSPJ 教学总结:STL

字数统计: 366阅读时长: 1 min
2025/04/12

STL 库是 C++ 语言的标准库,我们在比赛中主要用到的有如下内容。

string 类

  • substr
  • find
  • replace
  • insert
  • erase
  • c_str

容器

  • pair
  • vector
  • deque
  • list
  • stack
  • queue
  • priority_queue
  • map
  • unordered_map
  • set
  • unordered_set

算法库

函数 调用示意 说明
sort sort(v.begin(), v.end()) 快速排序
stable_sort stable_sort(v.begin(), v.end()) 稳定排序
unique unique(v.begin(), v.end()) 去重,返回的是去重后的元素末地址。可以结合 erase 函数来把多余数据删除
next_permutation next_permutation(v, v+n) 返回全排列的下一个值,当没有下一个排列时,函数返回 false
prev_permutation prev_permutation(v, v+n) 返回全排列的上一个值,当没有上一个排列时,函数返回 false
nth_element nth_element(v.begin(), v.begin() + k, v.end()), 函数执行后,v.begin()+k 位置的数为排序后的最终位置,即左边的数都小于它,后面的数都大于它
lower_bounds lower_bounds(v, v+n, a) 查找大于或等于 a 的第一个位置,如果没找到则返回 end()
upper_bounds upper_bounds(v, v+n, a) 查找大于 a 第一个位置,如果没找到则返回 end()
equal_range equal_range(v, v+n, a) equal_range 返回一个 pair,first 元素是查找到的匹配 a 值的左边界,second 元素是匹配到的 a 值的右边界,边界为左闭右开原则。当 first == second 的时候,相当于没找到目标值
__gcd __gcd(a, b) 返回 a 和 b 的最大公约数
reverse reverse(v.begin(), v.end()) 将原序列逆序
CATALOG
  1. 1. string 类
  2. 2. 容器
  3. 3. 算法库