Почему этот кусок кода дает мне ошибку: Vector итераторы несовместимымиVector итераторы несовместимыми: DEBUG
Эта часть кода была прослежена в файл Rogue Wave tpordvec.h
std::vector<T*> v;
const T* a // Where T is a template Class
for (std::vector<T*>::iterator p = v.begin(); p != v.end(); p++)
{
if (**p == *a)
{
T* temp = *p;
if (v.erase(p) == v.end()) //ASSERTION ERROR HERE
return NULL;
return temp;
}
}
Ах! Да, слегка контр-интуитивно в исходном коде 'end()' вызывается первым (согласно моему отладчику), а затем 'erase()' делает недействительным итератор, возвращаемый 'end()'. –
Удивительные парни, я это вижу. Спасибо за объяснение. – melbah