Несовместимые векторные итераторы C++
Хорошо, искал его по сети и внутри stackru около часа и не нашел ничего подобного, конечно, есть несколько случаев, но ни один из них, кажется, не имеет того же корня.
Хорошо, мне нужно перебрать multimap
и они хранятся в vector
, Вот код:
DataVector::iterator curr = m_rawBuffer[0]->begin();
DataVector::iterator last = m_rawBuffer[0]->end();
for( ; curr != last; ++curr) {
delete (*curr);
}
delete m_rawBuffer[0];
DataVector::iterator curr2 = m_rawBuffer[1]->begin();
DataVector::iterator last2 = m_rawBuffer[1]->end();
for( ; curr2 != last2; ++curr2) {
delete (*curr2);
}
delete m_rawBuffer[1];
DataVector
это std::multimap<MyData*>
,
m_rawBuffer
это std::vector<DataVector*>
,
Самое странное, что первый итератор на m_rawBuffer[0]
работает нормально, но перебирает m_rawBuffer[1]
не работает! И что еще более странно, он ломается только на одной машине, работает на распределенной системе, и все остальные машины в порядке.
operator[]
от std::vector
возвращает ссылку, верно?