【发布时间】:2021-03-27 11:21:50
【问题描述】:
我找不到任何解决方案,所以我发布了一个新主题。 我必须使用带有 const 函数的累积作为参数(为测试做一些练习):
-
get_skills() - 返回技能列表,定义为:
const vector<string>& get_skills() const; -
我必须返回所有技能长度的总和
我尝试过的:
double sum1 = accumulate(tmpObj.get_skills().begin(), tmpObj.get_skills().end(), 0., [](const string& s, const double& sum){return s.size() + sum;});
和我一起:
no matching function for call to object of type lambda
note: candidate function not viable: no known conversion from 'double' to 'const std::__cxx11::string' (aka 'const basic_string<char>') for 1st argument
有人可以解释一下使用什么作为 lambda(我尝试使用 tmpObj& 但没有改变任何东西) 以及是什么导致“从 'double' 到 'const std::__cxx11::string' 的未知转换”
提前谢谢你!
【问题讨论】:
-
看accumulate,尤其是
BinaryOperation op的先决条件。 -
reference documentation中的例子还不够清楚吗?你在那里特别缺少什么?您似乎误解了应该如何使用
std::accumulate(),您不能将string与doubles 添加。 -
@πάνταῥεῖ 我无法使用参考文档解决它。我不明白的是,我应该在 [] 中添加什么。而且我在使用 s.size() 时打错了字。我试图将 s.length() 添加到总和中,所以我并没有真正将字符串添加到双精度
标签: c++ stl accumulate