Mr_Vazovsky
@Mr_Vazovsky

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

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

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

Войти через TM ID
Похожие вопросы
от 70 000 до 80 000 руб.
от 160 000 до 200 000 руб.
WakeApp Москва
от 70 000 руб.
15 авг. 2018, в 23:38
300 руб./за проект
15 авг. 2018, в 22:39
60000 руб./за проект
15 авг. 2018, в 21:18
30000 руб./за проект