Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [C++] помогите с vector  (Прочитано 5728 раз)
0 Пользователей и 1 Гость смотрят эту тему.
The Nameless One
Помогающий

ru
Offline Offline
Пол: Мужской

« : 02-09-2009 11:18 » 

Привет, у меня проблемы с std::vector. Прошу помочь.

Вектор содержит элементы just.

Код:
std::vector<just> v;
std::vector<just>::iterator it;

В цикле происходит проверка условия A, если оно истинно, в вектор добавляется элемент.

Код:
if(A) v.push_back(obj);   //obj - объект класса just.

Далее в цикле перебираются все элементы в векторе, проверяются условия B и C, если одно, либо другое истинно, элемент из вектора удаляется. Условия B и С - это поля, которые содержит каждый объект класса just.


Код:
it=v.begin();
while(it!=v.end())
{
   if(it->B) {it=v.erase(it); continue;}
   ...
   if(it->С) {it=v.erase(it); continue;}
   it++;
}

Проблемы возникают при удалении объектов из контейнера. Причём, если в контейнере одновременно находится только один элемент, то все нормально при его удалении. Если же одновременно находятся два и более - то при удалении возникает критическая ошибка. (программа выполнила недопустимую операцию и будет закрыта).

Что я не так делаю?
Записан
The Nameless One
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 02-09-2009 11:26 » new

Камрады, извиняюсь, что морочу голову - ошибка в коде, который я пометил как "...".

Там используется внутренняя функция, которая сама может удалить элемент перед проверкой второго условия (С).

А так, вроде все нормально. Буду танцевать с бубном вокруг той функции Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines