为什么使用for_each错了?

时间:2015-10-09 16:53:03

标签: c++ stl

#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
using std::vector;
using std::cout;
using std::ostream_iterator;
int main()
{
    vector<int> vec_int{ 1,2,3 };
    std::for_each(vec_int.crbegin(), vec_int.rend(), [](const int & i) { cout << i;});
    return 0;
}

错误是:

  

C2782:&#39; _Fn1 std :: for_each(_InIt,_InIt,_Fn1)&#39;:模板参数&#39; _InIt&#39;含糊不清

谁能说出如何正确使用for_each?

1 个答案:

答案 0 :(得分:6)

您正在混合const和非const迭代器。那些是不同的类型,因此模板参数推断失败。使用其中任何一个作为两个参数:

std::for_each(vec_int.crbegin(), vec_int.crend(), [](const int & i) { cout << i;});
                                         ^