【发布时间】:2013-11-14 09:03:03
【问题描述】:
这行得通,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 实现了这一点.
这是复杂的还是微不足道的?
【问题讨论】:
-
您的问题是什么?你想知道为什么这不起作用吗?为什么会这样?
-
对不起,是的,为什么 for_each 不接受内部 for_each 作为函数参数,外部应用于外部向量,内部应用于 [each] 内部向量?所以这是微不足道的,为什么?
-
在反思中,应该是'为什么 def 函数没有以它的参数与向量的整数匹配的方式应用'?
-
for_each接受一个将元素作为其第三个参数的函数。for_each(b,e,f)是void类型的表达式。因此,它不是for_each的第三个参数的有效参数。 -
我明白了,我想我需要听听。我会接受作为答案 - 谢谢