算法题常用的小函数

  1. accumulate:用于对容器中的元素进行累加求和操作。
//第一、二个参数是起止位置,第三个参数是初值,返回的ssm=数组的指定元素和+第三个初值
int ssm=accumulate(v.begin(),v.end(),0);
  1. greater
//比如sort从大到小,优先队列重载成从小到大
sort(v.begin(),v.end(),greater<int>());
priority_queue<int,vector<int>,greater<int> >q;
  1. 字符串最后的元素
char c=*s.rbegin();
  1. binary_search:用于在有序容器中查找指定元素。
 	vector<int> vec = {1, 2, 3, 4, 5};
    bool found = std::binary_search(vec.begin(), vec.end(), 3);
    // found is true
  1. max_element 和 min_element:分别用于找到容器中的最大值和最小值。
	int max_it = *max_element(vec.begin(), vec.end());
    int min_it = *min_element(vec.begin(), vec.end());
  1. reverse:用于反转容器中元素的顺序。
reverse(vec.begin(), vec.end());
  1. count:用于计算容器中指定元素的个数。
int sum = count(vec.begin(), vec.end(), num);
  1. lower_bound 和 upper_bound:分别用于在有序容器中找到第一个大于等于指定值的元素和第一个大于指定值的元素。
	vector<int> vec = {1, 2, 3, 4, 5};
    int lb = lower_bound(vec.begin(), vec.end(), 3)-vec.begin();
    int ub = upper_bound(vec.begin(), vec.end(), 3)-vec.begin();
    // lb =2,ub=3
  1. unique:用于移除容器中相邻的重复元素,只保留一个。
vector<int> vec = {1, 2, 2, 3, 3, 4, 4, 4, 5};
auto last = unique(vec.begin(), vec.end());
 // Now vec {1, 2, 3, 4, 5, 4(last), 4, 4, 5}
 // last迭代器指向去重后容器中不重复元素的范围的尾后位置
  1. gcd 和 lcm:用于计算两个整数的最大公约数和最小公倍数。
	int a = 12, b = 18;
    int gcd_result = gcd(a, b);
    int lcm_result = lcm(a, b);
    // gcd_result is 6, lcm_result is 36
  1. find:用于在容器中查找指定元素的第一个出现位置。
vector<int> vec = {1, 2, 3, 4, 5};
int pos = find(vec.begin(), vec.end(), 3)-vec.begin();//pos=2
  1. fill:用于将容器中的元素全部赋值为指定值。
fill(vec.begin(), vec.end(), 10);
  1. stable_sort(): 和sort用法一样,包括自定义cmp之类的,但是是稳定的(基于归并排序)
    PAT之类的模拟题可能用到,例如成绩排序
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值