Удаление из вектора
От: TTL Беларусь  
Дата: 14.01.04 19:35
Оценка:
Есть следующие классы:
class Base{}; — абстрактный базовый класс
class Child1:public Base{};
class Child2:public Base{};

и три вектора:
std::vector<Child1*> Ch1Vec;
std::vector<Child2*> Ch2Vec;
std::vector<Base*> BsVec; //содержит элементы из Сh1Vec и Ch2Vec

Где-то в программе:
std::vector <Child1*> :: iterator Ch1Itr; 
std::vector <Base*> :: iterator BsItr;
Ch1Itr = Ch1Vec.begin();
BsItr = BsVec.begin();
while (dynamic_cast<Child1*>(*BsItr) != *Ch1Itr)
  ++BsItr;
Base *delptr = *BsItr;
delete delptr;
BsVec.erase(BsItr);
Ch1Vec.erase(Ch1Itr);


Т.е. имея итератор Ch1Itr я удалил записи на объект Child1 из векторов BsVec и Ch1Vec.
Тоже самое могу сделать, если имею итератор Сh2Itr.

А вот как обратную процедуру, т.е. имея итератор BsItr удалить записи из BsVec и одного из
векторов, хранящего указатели на потомков?
Вообще-то как удалить понятно, как наиболее быстро определить из какого вектора потомков
надо удалять? Неужели придется делать проход по всем векторам потомков, пока не встречу
искомый элемент?
... << RSDN@Home 1.1 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.