Russian Qt Forum

Программирование => С/C++ => Тема начата: Igors от Ноябрь 24, 2017, 11:02



Название: Удалить диапазон
Отправлено: Igors от Ноябрь 24, 2017, 11:02
Добрый день

Есть вектор эл-тов сортированный по ключу int. Удалить все эл-ты со значениями ключей от 2 до 5 включительно (например). Понятно что можно всяко, какой способ наиболее техничен?

Спасибо


Название: Re: Удалить диапазон
Отправлено: Авварон от Ноябрь 24, 2017, 15:39
lower_bound/upper_bound, затем сдвиг всех элементов, затем resize()


Название: Re: Удалить диапазон
Отправлено: __Heaven__ от Ноябрь 24, 2017, 16:15
std::equal_range + std::vector::erase


Название: Re: Удалить диапазон
Отправлено: Авварон от Ноябрь 24, 2017, 16:25
ах да, у вектора же есть ренж эрейз, это ж не qt:)


Название: Re: Удалить диапазон
Отправлено: Igors от Ноябрь 25, 2017, 10:26
Я тоже вижу эти 2 варианта (lower+upper bound и equal_range). Реализовал первый - ну получилось не так уж коротко (или элегантно) как хотелось бы. Может есть др способы или лучшая реализация этих? В общем, прошу блеснуть техникой  :)