Сохранение первых N элементов std::vector <> и удаление остальных элементов
У меня есть переменная std::vector<int>
в моем приложении C++
. Размер вектора определяется во время выполнения, но обычно около 1000
.
Я отсортировал этот вектор (который хорошо работает), и после сортировки я хотел бы сохранить только первые 50
элементы.
Я пробовал:
kpts.erase(kpts.begin() + 50, kpts.end());
где kpts
- мой вектор, а производительность ужасна! Предположительно из-за способа erase
.
Есть ли способ сохранить только первые 50
элементы вектора? Кажется, что это должно быть очевидно, но я не могу найти способ сделать это.
Ответы
Ответ 1
Да, вы можете использовать std::vector::resize
, который просто усекает, если длина вектора больше n.
Смотрите здесь: http://www.cplusplus.com/reference/vector/vector/resize/
std::vector<int> myvector;
for (int i=1;i<1000;i++) myvector.push_back(i);
myvector.resize(50);
// myvector will contain values 1..50