dimanche 23 juillet 2017

Use vector

#include<vector>
#include<iostream>
using namespace std;

int main()
{
    vector<int> vec = {1,2,3,4};
    for(auto & it = vec.begin(); it != vec.end(); ++it)
    {
        cout << *it << endl;
    }
}

Hello all, in C++ I use iterator by reference such as "auto & it" and the compiler return the error " error: invalid initialization of non-const reference of type '__gnu_cxx::__normal_iterator >&' from an rvalue of type 'std::vector::iterator {aka __gnu_cxx::__normal_iterator >}' for(auto & it = vec.begin(); it != vec.end(); ++it) ".

I know "auto it = vec.begin()" works fine but as we all know pass by reference will improve the efficiency in C++, so why this error occurs when I use "auto & it"?

Aucun commentaire:

Enregistrer un commentaire