Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 迭代器在for_中的行为怪异_C++_Foreach_Iterator_Dereference - Fatal编程技术网

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
}