我需要使用std :: for_each()来遍历列表。但是,在for_each()的UnaryFunction部分,我需要使用一个lambda,它实际上通过std :: advance()来推进迭代器。
例如
for_each(beginIter, endIter, lambda);
和
auto lambda [] = (<Iter parameter>){advance(Iter parameter, 1)};
我期待当lambda返回时,for_each()将从lambda离开的位置继续迭代。
这种理解是否正确?
TIA
维诺德
答案 0 :(得分:0)
不,它不起作用。
UnaryFunction
std::for_each
参数将取消引用迭代器作为其参数,而不是迭代器本身。因此,您无法修改lambda中的迭代器。
根据您显示的用法,您应该得到编译器错误,即lambda参数类型与for_each
模板的期望不匹配,例如
no known conversion for argument 1 from ‘int’ to ‘std::vector<int>::iterator&’