Why is it showing no operator= for my vector iterator?
c++, c++11, stl
Solution
You need to use `vector<int>::const_iterator` instead of `vector<int>::iterator`.
If you are working with a compiler that supports C++11 or later version, you can use `auto` type.
auto i = A.begin();
Problem
This is the function for computing maximum sum of a subarray ``` int Solution::maxSubArray(const vector<int> &A) { vector<int>::iterator i; int max_so_far = *A.begin(); int current_max = *A.begin(); for(i = A.begin(); i != A.end(); ++i) { current_max = max(*i,*i+current_max); max_so_far = max(max_so_far,current_max) } return max_so_far; ``` } This is the error , I'm getting this for C++11 and not in previous versions. Help me solve this ``` solution.cpp: In member function 'int Solution::maxSubArray(const std::vector<int>&)': solution.cpp:9:8: error: no match for 'operator=' (operand types are 'std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' and 'std::vector<int>::const_iterator {aka __gnu_cxx::__normal_iterator<const int*, std::vector<int> >}') for(i = A.begin(); i != A.end(); ++i) ^ solution.cpp:9:8: note: candidates are: In file included from /usr/include/c++/4.8/bits/stl_algobase.h:67:0, from /usr/include/c++/4.8/bits/char_traits.h:39, from /usr/include/c++/4.8/ios:40, from /usr/include/c++/4.8/ostream:38, from /usr/include/c++/4.8/iostream:39, from solution.h:7, from solution.cpp:-3: /usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: __gnu_cxx::__normal_iterator<int*, std::vector<int> >& __gnu_cxx::__normal_iterator<int*, std::vector<int> >::operator=(const __gnu_cxx::__normal_iterator<int*, std::vector<int> >&) class __normal_iterator ^ /usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: no known conversion for argument 1 from 'std::vector<int>::const_iterator {aka __gnu_cxx::__normal_iterator<const int*, std::vector<int> >}' to 'const __gnu_cxx::__normal_iterator<int*, std::vector<int> >&' /usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: __gnu_cxx::__normal_iterator<int*, std::vector<int> >& __gnu_cxx::__normal_iterator<int*, std::vector<int> >::operator= (__gnu_cxx::__normal_iterator<int*, std::vector<int> >&&) /usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: no known conversion for argument 1 f ```