У меня есть отсортированный std::vector
относительно небольшого размера (от 5 до 20 элементов). Я использовал std::vector
, так как данные непрерывны, поэтому у меня скорость из-за кеша. В определенный момент мне нужно удалить элемент из этого vector
.Курорт на std :: vector vs std :: insert
У меня теперь есть сомнение: какой самый быстрый способ удалить это значение между двумя вариантами ниже?
- установки этого элемента в 0 и вызовите
sort
реорганизовать: это имеет сложности, но элементы находятся на одной и той же строке кэша. - звоните
erase
, который скопирует (или memcpy, кто знает?) Все элементы после него из 1-го места (мне нужно исследовать скрытое удаление стирания).
Знаете ли вы, что быстрее?
Я думаю, что такой же подход можно было бы подумать о вставке нового элемента без попадания максимальной емкости вектора.
С уважением
AFG
Почему вы не мерите и не узнаете? –
Кроме того, я не вижу, как сортировка (которая включает в себя копирование) может быть быстрее, чем просто копирование. –
... и имеет значение тип элемента контейнера. – dirkgently