Mr_Vazovsky
@Mr_Vazovsky

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

Здравствуйте, господа товарищи! Есть вектор указателей на объекты класса. Циклом перебираю все элементы данного вектора. Нужно при выполнении некоторого условия удалить элемент внутри цикла. Как это сделать?
  • Вопрос задан
  • 1136 просмотров
Пригласить эксперта
Ответы на вопрос 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 (в метаданных, т.е. если у тебя класс с вектором, уменьшаешь поле, означающее число значащих элементов в векторе). Иначе только копированием региона, потому что Си не умеет делать массивы изменяемой длины, об этом нужно заботиться программисту.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект