1.accumulate
int sum = accumulate(vec.begin() , vec.end() , 0);
int sum = accumulate(a+1,a+1+n,0)
用于求某一段的和
第一个参数是首地址,第二个参数是结束地址,最后一个参数是累加求和的初值.
如果需要求前缀可以将第三个参数,置成0.
时间复杂度 $O(n)$
2.max_element/min_element
1.求最大值
*max_element(a.begin()+1,a.end())
max_element返回的是迭代器,加上号后,相等于取该迭代器上的元素。
2.直接求下标
max_element(a.begin()+1,a.end())-a.begin()
由于返回的是迭代器,因此需要在返回迭代器的地址上减去首地址,就可以得到最大值的下标了.
3.数组求值/求下标的用法.
*max_element(a+1,a+1+n)
max_element(a+1,a+1+n)-a;