У меня есть карта, какие элементы vectors.I должны удалить из этих векторов всех элементов, которые равны специального номер num
вектора итераторы несовместим, а вычеркнуть из вектора
std::map<size_t,std::vector<size_t> > myMap;
for (std::map<size_t,std::vector<size_t> >::iterator itMap = myMap.begin();itMap != myMap.end();++itMap)
{
for (std::vector<size_t>::iterator itVec = itMap->second.begin();itVec != itMap->second.end();)
{
auto itNextVec = itVec;
++itNextVec;
if (*itVec == num)
{
itMap->second.erase(itVec);
}
itVec = itNextVec;
}
}
Код причина время выполнения exepssion. В VS - vector iterators incompatible
. Может кто-нибудь указать, в чем причина?
Благодаря
Вы знаете о ['std :: remove'] (http://en.cppreference.com/w/cpp/algorithm/remove), правильно? Это будет не только красивее, но и более эффективно. 'auto & v = itMap-> second; v.erase (std :: remove (v.begin(), v.end(), num), v.end()); ' –