Добавить контэйнерам возможность обрезаться до нужного диапазона
У вектора с помощью 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.
До этого не имел дела со строками и удивился, что у них есть substr:
путь_без_кавычек = путь_в_кавычках.substr(1, путь_в_кавычках.length() - 2);
Получается, я предлагаю то же самое, но для векторов, subvec.
Ещё, чем больше изучаю С++, тем больше удивляюсь, насколько неуместен в отношении него вопрос
Зачем делать все комбинаторно возможные методы, которые реализуются из различных пар уже существующих методов
std::vector? Какая цель? Чтобы что?
Например, вот у string есть length() и size() - оба одно и то же!