C++ 迭代器在for_中的行为怪异
迭代器在使用之前不需要被延迟吗? 我不明白为什么C++ 迭代器在for_中的行为怪异,c++,foreach,iterator,dereference,C++,Foreach,Iterator,Dereference,迭代器在使用之前不需要被延迟吗? 我不明白为什么 for_each(vecResult.begin(), vecResult.end(), [](auto counter) {cout << counter << endl; }); 对于每个(vecResult.begin()、vecResult.end()、[](自动计数器){cout的可能实现如下所示: 模板 每个_的constexpr一元函数(先输入,后输入,一元函数f) { for(;first!=last;+
for_each(vecResult.begin(), vecResult.end(), [](auto counter) {cout << counter << endl;
});
对于每个(vecResult.begin()、vecResult.end()、[](自动计数器){cout的可能实现如下所示:
模板
每个_的constexpr一元函数(先输入,后输入,一元函数f)
{
for(;first!=last;++first){
f(*第一);
}
返回f;//自C++11以来的隐式移动
}
资料来源:
正如您在上面看到的,传递给f
(在您的例子中,lambda)的内容已经被取消引用。因此,在您的示例中计数器
不是迭代器,而是迭代器指向的值。@John如果这回答了您的问题,您应该按下左侧的绿色勾号,将您的问题标记为已解决。
"'<<':illegal for class)
template<class InputIt, class UnaryFunction>
constexpr UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f)
{
for (; first != last; ++first) {
f(*first);
}
return f; // implicit move since C++11
}