【发布时间】:2015-07-21 16:38:36
【问题描述】:
我有一个成对的 int 向量,我想添加每对的所有第一个元素。我写了以下代码
#include <iostream>
#include <numeric>
#include <vector>
#include <utility>
#define PII pair<int,int>
using namespace std;
int main() {
vector<pair<int,int>> v;
v.push_back(PII(1,2));
v.push_back(PII(3,4));
v.push_back(PII(5,6));
cout<<accumulate(v.begin(),v.end(),0,[](auto &a, auto &b){return a.first+b.first;});
return 0;
}
这里给出错误http://ideone.com/Kf2i7d。 要求的答案是 1+3+5 = 9。我无法理解它给出的错误。
【问题讨论】:
-
我停止阅读
#define,为什么不改用typedef? -
或
using PII = std::pair<int,int>;,因为它是 c++11。
标签: c++ algorithm vector lambda stl