使用 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&lt;double, std::allocator&lt;double&gt; &gt;' to 'double *' for 1st argument

引用 lambda 的第一个参数 coln

我的代码(其中TOFROM 是某个整数,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

使用 functools.reduce 时出现属性错误

使用 htdocs xampp 运行命令时出现以下错误

使用此命令时出现错误,我不知道为啥? [复制]

尝试使用 Firebase 身份验证时出现错误

尝试使用柯南安装 gtest 时出现 HTTPSConnectionPool 错误