c++ - for_each(for_each())?

标签 c++ c++11 vector foreach

这行得通,for_each 传递 vector

std::vector<int> v(10, 1);
std::vector< std::vector<int> > vv(10, v);
auto vvit = vv.begin();

std::for_each(vvit, vv.end(), f);

函数 f 重新应用 for_each 以处理内部 vector 整数

void f(const std::vector<int>& v) {std::for_each(v.begin(), v.end(), def);}

但 for_each 内有 for_each

std::for_each(vvit, vv.end(), std::for_each((*vvit).begin(), (*vvit).end(), def));

和仅用于整数的函数

void def(const int& i) { std::cout << i; }

没有。 (如果我尝试正确的话,也不会使用 bind。)编译器说 def 函数无法应用正确的转换,即从 vector 分配器( vector 的位置指针?)到 const int&,前一个示例通过 vector 分隔函数 f 实现.

这是复杂的还是微不足道的?

最佳答案

最简单的解决方案是在 lambda 中传递 for_each:

std::for_each(vvit, vv.end(), [f](std::vector<int> const& v)
  { std::for_each(v.begin(), v.end(), f); } );

但是有什么问题

for (auto const& v : vv) {
  for (int i : v) {
    f(i);
  }
}

关于c++ - for_each(for_each())?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967493/

相关文章:

c++ - 文件结束无限while循环

c++ - boost 是否使用 C++11 "inline namespaces"来避免运行时出现 ABI 不兼容错误?

c++11 - std::function 是如何为 lambda 构造的

c++ - 为什么 std::vector 零初始化它的内存?

math - 给定所有 4 个顶点位置,求不规则四面体的高度

c++ - 如何将 C++ 中的 char 指针内的数据分配给 JSONCPP

c++ - 粒子系统 : particle generation

c++ - _Not_fn 函数调用运算符的 noexcept 说明符

r - 聚类向量在 R 中得到一个零一矩阵

c++ - 在类中创建多维 STL vector