- accumulate:用于对容器中的元素进行累加求和操作。
//第一、二个参数是起止位置,第三个参数是初值,返回的ssm=数组的指定元素和+第三个初值
int ssm=accumulate(v.begin(),v.end(),0);
- greater
//比如sort从大到小,优先队列重载成从小到大
sort(v.begin(),v.end(),greater<int>());
priority_queue<int,vector<int>,greater<int> >q;
- 字符串最后的元素
char c=*s.rbegin();
- binary_search:用于在有序容器中查找指定元素。
vector<int> vec = {1, 2, 3, 4, 5};
bool found = std::binary_search(vec.begin(), vec.end(), 3);
// found is true
- max_element 和 min_element:分别用于找到容器中的最大值和最小值。
int max_it = *max_element(vec.begin(), vec.end());
int min_it = *min_element(vec.begin(), vec.end());
- reverse:用于反转容器中元素的顺序。
reverse(vec.begin(), vec.end());
- count:用于计算容器中指定元素的个数。
int sum = count(vec.begin(), vec.end(), num);
- 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
- 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迭代器指向去重后容器中不重复元素的范围的尾后位置
- 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
- find:用于在容器中查找指定元素的第一个出现位置。
vector<int> vec = {1, 2, 3, 4, 5};
int pos = find(vec.begin(), vec.end(), 3)-vec.begin();//pos=2
- fill:用于将容器中的元素全部赋值为指定值。
fill(vec.begin(), vec.end(), 10);
-
stable_sort(): 和sort用法一样,包括自定义cmp之类的,但是是稳定的(基于归并排序)
PAT之类的模拟题可能用到,例如成绩排序 -
__builtin_popcount( ):统计十进制数转为二进制后1的个数
int cnt_one= __builtin_popcount(n);