0

这有效, for_each 传递向量

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 以使用内部向量整数

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 函数不能应用正确的转换,即从向量分配器(向量的位置指针?)到 const int&,这是前一个例子用向量分离函数 f 实现的.

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

4

1 回答 1

2

最简单的解决方案是传入for_each一个 lambda:

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);
  }
}
于 2013-11-14T01:03:03.323 回答