C++11 for_each 传递多个值

标签 c++ c++11

我有以下方法:

CalculateThreshold(std::vector<double> &data, int thres)
{
  // include functionality 
}

然后我有一个 vector 的 vector ,我想使用 std::for_each 迭代它,我尝试使用以下内容:

std::for_each(
   std::begin(results),
   std::end(results), 
   std::bind2nd(std::mem_fun(&CalculateThres), 1)); 

但我不断收到错误消息:

note: candiditates are template std::mem_fun_t<_Ret, _Tp> std::mem_fun(_Ret (_Tp::*)())

有人对我哪里出错有建议吗?对我来说,这应该可行!

最佳答案

只需使用 std::bind,不需要 std::mem_fun(如评论中所述)。

std::for_each(
   std::begin(results),
   std::end(results), 
   std::bind(CalculateThres, std::placeholders::_1, 1)); 

此外,bind1stbind2nd 已弃用,您应该使用 bind反而。同样,mem_fun 也已弃用,其替换为 mem_fn .

关于C++11 for_each 传递多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23573934/

相关文章:

c++ - 使用派生类的成员函数启动线程

c++ - 模板特化和别名模板推导区别

c# - 将 dll 文件复制到 ClickOnce 部署中的 .exe 目录

c++ - 使用yaml-cpp错误解析YAML文件

c++ - 将 RGB 转换为十六进制 C++?

c++ - 什么时候在 C++ 中使用静态(在未命名的命名空间上)是合适的?

c++ - 不能声明 QWidget 因为虚函数是纯的

C++11 右值并 move : Can legacy code avoid copy?

C++ - begin() 返回带有非空列表的 end() 迭代器

c++ - 缓存行对齐(需要在文章中说明)