Задать вопрос
Mr_Vazovsky
@Mr_Vazovsky

Как удалить элемент вектора внутри цикла?

Здравствуйте, господа товарищи! Есть вектор указателей на объекты класса. Циклом перебираю все элементы данного вектора. Нужно при выполнении некоторого условия удалить элемент внутри цикла. Как это сделать?
  • Вопрос задан
  • 1214 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
@D3Nd3R
Можно все сделать и без цикла:
contours.erase(std::remove_if(contours.begin(), contours.end(),
		[this](std::vector<cv::Point> vec)->bool
                         {return vec.size() < this->mParams.minContourSize; })
		,contours.end());
Ответ написан
Комментировать
vesper-bot
@vesper-bot
Любитель файрволлов
Перебирай с конца, после чего для удаления можно хвостовой элемент перенести на место удаляемого и уменьшить длину вектора на 1 (в метаданных, т.е. если у тебя класс с вектором, уменьшаешь поле, означающее число значащих элементов в векторе). Иначе только копированием региона, потому что Си не умеет делать массивы изменяемой длины, об этом нужно заботиться программисту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы