Позвольте мне догадаться, вы делаете it=this->delta_.begin();
в методе const
класса, а delta_
является членом класса?
Константность метода гарантирует, что членыкласс не изменится.Но переменная it
имеет неконстантный тип iterator
, и это дает возможность изменить элемент delta_
, который делает защиту поврежденной.
std::vector
имеет два перегруженных метода begin()
iterator begin ();
const_iterator begin () const;
Если вы используете begin()
в методе, который const
, компилятор вызывает второй.
Поэтому вам нужно отказаться от константности метода или использовать const_iterator
.
Другой возможный способ, который я не рекомендую из-за размытия константы объекта, - поместить ваш вектор в кучу и работать с указателем на него.