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
current_max = max(*i,*i+current_max);is incredibly suspicious, don't you meancurrent_sum? You are summingA, andmax_so_farwill only be different if some of the values are negative