c++基础-做题常用stl函数用法总结及其时间复杂度!

1. 排序与查找相关函数

  • sort(begin, end)
    • 描述: 对指定范围内的元素进行排序。
    • 时间复杂度: 平均 O(nlog⁡n)。
  • stable_sort(begin, end)
    • 描述: 稳定排序,即在排序过程中保留相等元素的相对顺序。
    • 时间复杂度: O(nlog⁡n)。
  • partial_sort(begin, middle, end)
    • 描述: 对指定范围的一部分元素进行排序,使得 middle 之前的元素是有序的。
    • 时间复杂度: O(nlog⁡k) (其中 kmiddle - begin 的大小)。
  • nth_element(begin, nth, end)
    • 描述: 将指定范围内的第 n 大的元素放在 nth 位置,前面的元素都小于或等于它,后面的元素都大于或等于它。
    • 时间复杂度: 平均 O(n)。
  • lower_bound(begin, end, value)
    • 描述: 查找第一个不小于 value 的元素位置(要求范围已排序)。
    • 时间复杂度: O(log⁡n)。
  • upper_bound(begin, end, value)
    • 描述: 查找第一个大于 value 的元素位置(要求范围已排序)。
    • 时间复杂度: O(log⁡n)。
  • binary_search(begin, end, value)
    • 描述: 判断范围内是否存在等于 value 的元素(要求范围已排序)。
    • 时间复杂度: O(log⁡n)。

2. 集合操作相关函数

  • merge(begin1, end1, begin2, end2, output)
    • 描述: 合并两个有序范围,将结果存储在 output 中。
    • 时间复杂度: O(n1+n2)(其中 n1n2 是两个范围的大小)。
  • set_union(begin1, end1, begin2, end2, output)
    • 描述: 计算两个已排序范围的并集,将结果存储在 output 中。
    • 时间复杂度: O(n1+n2)。
  • set_intersection(begin1, end1, begin2, end2, output)
    • 描述: 计算两个已排序范围的交集,将结果存储在 output 中。
    • 时间复杂度: O(n1+n2)。
  • set_difference(begin1, end1, begin2, end2, output)
    • 描述: 计算两个已排序范围的差集(在第一个范围中,但不在第二个范围中的元素),将结果存储在 output 中。
    • 时间复杂度: O(n1+n2)。
  • set_symmetric_difference(begin1, end1, begin2, end2, output)
    • 描述: 计算两个已排序范围的对称差,将结果存储在 output 中。
    • 时间复杂度: O(n1+n2)。

3. 排列相关函数

  • next_permutation(begin, end)
    • 描述: 生成范围内元素的下一个字典序排列。
    • 时间复杂度: O(n)。
  • prev_permutation(begin, end)
    • 描述: 生成范围内元素的上一个字典序排列。
    • 时间复杂度: O(n)。

4. 插入与删除操作

  • push_back(value) (对于 vectordeque)
    • 描述: 将元素添加到容器末尾。
    • 时间复杂度: 平均 O(1),但由于需要扩容,最坏情况为 O(n)。
  • pop_back() (对于 vectordeque)
    • 描述: 移除容器末尾的元素。
    • 时间复杂度: O(1)。
  • insert(position, value) (对于 vector)
    • 描述: 在指定位置插入元素。
    • 时间复杂度: O(n)。
  • erase(position) (对于 vector)
    • 描述: 移除指定位置的元素。
    • 时间复杂度: O(n)。

5. 其他常用函数

  • find(begin, end, value)
    • 描述: 查找范围内等于 value 的第一个元素。
    • 时间复杂度: O(n)。
  • count(begin, end, value)
    • 描述: 计算范围内等于 value 的元素数量。
    • 时间复杂度: O(n)。
  • reverse(begin, end)
    • 描述: 反转范围内的元素顺序。
    • 时间复杂度: O(n)。
  • unique(begin, end)
    • 描述: 移除范围内相邻的重复元素。
    • 时间复杂度: O(n)。
  • rotate(begin, middle, end)
    • 描述: 将范围内的元素旋转,使 middle 成为新范围的起点。
    • 时间复杂度: O(n)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beiwen_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值