#include <cstdlib> #include <iostream> #include <vector> #include <numeric> using namespace std; typedef struct _NODE { int id; int val; int operator()(int nod, _NODE &node) { return nod * (node.val); } }NODE; int main(int argc, char *argv[]) { vector<NODE> vec; for(int i=1; i<5; i++) { NODE temp; temp.id = i; temp.val = i; vec.push_back(temp); } long long sum = accumulate(vec.begin(), vec.end(), 1, NODE()); cout << "sum is: " << sum << endl; system("PAUSE"); return EXIT_SUCCESS; } 需要为自定义的结构类型重载()运算符, 而且第一个参数的类型应该和调用accumulate()的第三个参数(也就是初始化值)类型一致,其他就没了...