"没有匹配的函数调用..."此错误来自何处以及如何解决?

zmi*_*ard 3 c++ iterator vector

我碰到的一个问题,与3号线 - "不匹配函数调用为std ::矢量::的push_back(INT*)常量" - 可有人向我解释,此问题将是从哪里来的,我怎么能解决这个问题?

for(int i = 1; i < 7; i++){
   for(vector< vector<int> >::const_iterator it = x.begin(); it < x.end(); it++){
      it->push_back(i);
   }
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*hik 6

你正在使用一个迭代const_iterator.根据定义,您无法修改const_iterator引用内容.使用非const iterator代替:

for(vector< vector<int> >::iterator it = x.begin(); it != x.end(); it++){
      it->push_back(i);
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,您应该使用现代C++ 11或更高版本:

for (auto &x_vector: x)
     x_vector.push_back(i);
Run Code Online (Sandbox Code Playgroud)

难道你不认为现代C++更容易编写和理解吗?