唐巧的博客

唐巧的博客

马上订阅 唐巧的博客 RSS 更新: https://blog.devtang.com/atom.xml

CSPJ 教学总结:STL

2025年4月12日 22:00

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

string 类

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

容器

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

算法库

函数调用示意说明
sortsort(v.begin(), v.end())快速排序
stable_sortstable_sort(v.begin(), v.end())稳定排序
uniqueunique(v.begin(), v.end())去重,返回的是去重后的元素末地址。可以结合 erase 函数来把多余数据删除。参考代码:v.erase(unique(v.begin(), v.end()), v.end());
next_permutationnext_permutation(v, v+n)返回全排列的下一个值,当没有下一个排列时,函数返回 false
prev_permutationprev_permutation(v, v+n)返回全排列的上一个值,当没有上一个排列时,函数返回 false
nth_elementnth_element(v.begin(), v.begin() + k, v.end()),函数执行后,v.begin()+k 位置的数为排序后的最终位置,即左边的数都小于它,后面的数都大于它
lower_boundslower_bounds(v, v+n, a)查找大于或等于 a 的第一个位置,如果没找到则返回 end()
upper_boundsupper_bounds(v, v+n, a)查找大于 a 第一个位置,如果没找到则返回 end()
equal_rangeequal_range(v, v+n, a)equal_range 返回一个 pair,first 元素是查找到的匹配 a 值的左边界,second 元素是匹配到的 a 值的右边界,边界为左闭右开原则。当 first == second 的时候,相当于没找到目标值
__gcd__gcd(a, b)返回 a 和 b 的最大公约数
reversereverse(v.begin(), v.end())将原序列逆序
min_elementmin_element(v.begin(), v.end())返回的是地址,如果想要值,可以用 * 获得对应下标的值,如果想获得下标,可以让它减去 v.begin()
max_elementmax_element(v.begin(), v.end())返回的是地址,如果想要值,可以用 * 获得对应下标的值,如果想获得下标,可以让它减去 v.begin()
accumulateaccumulate(v.begin(), v.end(), 0);第三个参数是初始值

练习

题号说明

剩余内容已隐藏

查看完整文章以阅读更多