随便记记了。(不定期更新)
/---------------------------------------------------------------------------------------------------------/
reverse函数反转的范围是[first,last),所以包括first指向的元素,不包括last指向的元素。
而a.end()(a为string)指向a最后一个字符的后一位。
/---------------------------------------------------------------------------------------------------------/
全排列:next_permutation()函数功能是输出所有比当前排列大的排列,顺序是从小到大。
而prev_permutation()函数功能是输出所有比当前排列小的排列,顺序是从大到小。
/---------------------------------------------------------------------------------------------------------/
unique的作用就是"去除"数组中重复的元素,unique去重的过程是把不重复的元素移到前面来,所以去重后数组会变。
而lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序(前提)的数组中进行查找的。所以数组不会变。
它们都是返回地址(迭代器),所以都要减去首地址。
/---------------------------------------------------------------------------------------------------------/
max_element() 和 min_element():
1、第三个参数cmp可写可不写, max_element()和 min_element() 默认是从小到大排列,然后 max_element() 输出最后一个值, min_element() 输出第一个值,但是如果自定义的 cmp函数写的是从大到小排列,那么会导致 max_element() 和min_element() 的两个结果是对调的。
2、可以用于结构体,string,vector等等,注意cmp从小到大排列。
3、不会改变原数组。
4、范围同样是[first,last),不包括last指向的元素。
/---------------------------------------------------------------------------------------------------------/
accumulate的3种用法:
1、累加求和:
int sum=accumulate(a.begin(),a.end(),0);
第三项为初值。
2、累项相乘:加第四项multiplies<int>()
3、自定义数据类型的处理
struct node{
int id,num; string k };
node a[5];
int sum=accumulate(a,a+5,0,[](int x,node t){
return x+t.num;});
/---------------------------------------------------------------------------------------------------------/
/---------------------------------------------------------------------------------------------------------/
面向新手:
switch中case与default
运算符&与&&,|与||的区别
Memset 初始化问题(至于fill函数和遍历赋值没什么区别)