c++ - C ++:在accumulate方法中使用Lambda函数
问题描述
我有一个二维的vector< vector<int> >
,说
contests = [[5, 1], [2, 1], [1, 1], [8, 1], [10, 0], [5, 0]]
我想用来accumulate
获取第一个元素的总和,所以我使用 lambda 函数来访问向量向量中的正确维度:
#include <iostream>
#include <vector>
#include <numeric>
int main() {
std::vector< std::vector<int> >
contests = {{5, 1}, {2, 1}, {1, 1}, {8, 1}, {10, 0}, {5, 0}};
int sum = std::accumulate(contests.begin(),contests.end(), 0,
[](const std::vector<int>& a, const std::vector<int>& b)->int
{return a[0] + b[0];}
);
std::cout << sum << std::endl;
return 0;
}
结果我得到一个很长的编译错误,最后一行指出:
note: candidate: ‘main(int, std::vector<std::vector<int> >)::<lambda(const std::vector<int>&, const std::vector<int>&)>’
[](const vector<int>& a, const vector<int>& b)->int {return a[0] + b[0];}
^~~
main.cpp:37:55: note: no known conversion for argument 1 from ‘int’ to ‘std::vector<int>’
如何让 lambda 识别正确的参数?
解决方案
推荐阅读
- excel - Excel VBA:引用命名范围,就像引用图表或表格一样
- assembly - 分段错误(x86 程序集)
- c# - 如何在 AzureDevops 中为 Dockerfile 设置环境变量(ASPNETCORE_ENVIRONMENT)?
- google-chrome - 当使用 Spring 将浏览器更改请求从 HTTPs 重定向到 HTTP
- javascript - 如果其他条件在赛普拉斯
- postgresql - Helidon 应用程序中的 Db health Ping 子句出现异常
- javascript - 滚动错误时的主动导航 - Vanilla JS
- windows-10 - Windows Defender Win32/Persistence.DQ!ml,它是什么?
- ontology - obo、bio2rdf 和 bioportal 有什么区别
- flutter - 当一个小部件被按下时,如何插入另一个小部件来代替另一个?