В Qt 5.2.1 как получается, что следующие результаты кода отличаются?
QVector<int> c;
if (c.cbegin() != c.begin())
{
std::cout << "Argh!" << std::endl;
}
это печатает "argh", но следующее не делает.
QVector<int> c;
if (c.begin() != c.cbegin())
{
std::cout << "Argh!" << std::endl;
}
Обратите внимание, что переключатели cbegin и begin переключаются. Но если вы меняете состояние контейнера, я имею в виду, например, push_back что-то в нем, он работает правильно. Мне кажется, что перед вызовом любого измененного метода в контейнере cbegin и cend недействительны. Это ошибка или функция?