使用 std::count_if() 时出现错误“没有从 'std::vector<double, std::allocator<double> >' 到 'double *'
Posted
技术标签:
【中文标题】使用 std::count_if() 时出现错误“没有从 \'std::vector<double, std::allocator<double> >\' 到 \'double *\' 的已知转换”?【英文标题】:Error " no known conversion from 'std::vector<double, std::allocator<double> >' to 'double *' " when using std::count_if()?使用 std::count_if() 时出现错误“没有从 'std::vector<double, std::allocator<double> >' 到 'double *' 的已知转换”? 【发布时间】:2020-09-05 13:15:12 【问题描述】:我正在使用std::count_if()
遍历向量向量的每个“列”,并返回大于某个值且在某个“行范围”内的项目数。出于某种原因,我得到了错误:
note: candidate function not viable: no known conversion from 'std::vector<double, std::allocator<double> >' to 'double *' for 1st argument
引用 lambda 的第一个参数 coln
。
我的代码(其中TO
和FROM
是某个整数,ROWS
是向量向量中的“行”数),这是一个类的内部方法:
vector<vector<double> > channels;
// Code to ill 'channels' with some data
for(int coln = 0; coln < _chnl; ++coln)
auto start = std::next(channels.begin(), FROM);
auto stop = std::prev(channels.end(), (ROWS-1) - TO);
return std::count_if(start, stop, [coln, threshold](double row[])
return row[coln] > threshold;
);
另外请注意,我使用的是 Cling 解释器,但我也能够在 Clang 中重现错误。
【问题讨论】:
再一次,请您不要再向over 和over 发送同样的问题了吗? 【参考方案1】:你的 lambda 错误,应该是:
[coln, threshold](const std::vector<double>& row) return row[coln] > threshold;
【讨论】:
以上是关于使用 std::count_if() 时出现错误“没有从 'std::vector<double, std::allocator<double> >' 到 'double *'的主要内容,如果未能解决你的问题,请参考以下文章
使用串行插件时出现 Ionic Capacitor Android 错误 - 连接到外部设备时出现 Cordova_not_available