Добавить контейнерам возможность обрезаться до нужного диапазона
perfectGenius opened this issue · 4 comments
У вектора с помощью erase можно удалить элемент или диапазон. Но странно, что нет возможности удалить всё, кроме этого диапазона. Мне пришлось вручную удалять спереди и сзади от нужного диапазона. Но если объединить эти функции в одну, то пропадёт лишнее перемещение указателя конца, это произойдёт лишь один раз.
Назвать можно по аналогии с shrink_to_fit - shrink_to_range.
Можно воспользоваться std::move
+ resize()
. В любом случае в реализации будет то же самое происходить, что и в случае с удалением из конца + удалением из начала. Чем так страшно перемещение указателя конца? Это кажется O(0)
, не?)
И это будет выглядеть красивее, чем
вектор.shrink_to_range(вектор.begin() + начало_диапазона, вектор.begin() + конец_диапазона);?
shrink_to_fit не удаляет элементы, а урезает зарезервированную память. Нельзя назвать по аналогии с shrink_to_fit
Действительно, легко так подумать по похожему названию. Тогда resize_to_range.