1. 求容器内所有元素之和
使用numeric中的accumulate函数进行求和。
#include <numeric>
accumulate(v.begin(), v.end(), 0);
accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
如可以使用accumulate把string型的vector容器中的元素连接起来:
string sum = accumulate(v.begin() , v.end() , string(" "));
这个函数调用的效果是:从空字符串开始,把vec里的每个元素连接成一个字符串。
为了防止其整型溢出,可以将初始值设置为long long 类型
accumulate(num.begin(), num.end(), 0LL); // 初始值设置为long long类型
2. 返回数组中最大/小的元素
int main(){
int a[] = {1,2,3,4,5};
int maxa = *max_element(a,a+5);
int mina = *min_element(a,a+5);
cout << maxa << ' ' << mina << endl;
return 0;
}
//二维数组的用法
int max_num = *max_element( &dp[0][0], &dp[n-1][n-1] );
3.对数组或者pair进行排序
二维数组的比较函数(按第一行升序排列,第一行相等的按第二行降序排列)
static bool compare( const vector<int> &a, const vector<int> &b ){
if( a[0] == b[0] ) return a[1] > b[1];
else return a[0] < b [0];
}