保留 std::vector 的前 N 个元素<>并删除其余元素

Keeping the first N elements of a std::vector<> and removing the rest

本文关键字:元素 删除 余元素 lt vector std 的前 保留 gt      更新时间:2023-10-16

我在我的C++应用程序中具有std::vector<int>变量。向量的大小在运行时确定,但通常是关于1000的。

我已经对此向量进行了排序(效果很好),在排序之后,我只想保留第一个50元素。

我尝试过:

kpts.erase(kpts.begin() + 50, kpts.end());

kpts是我的矢量,而且性能很可怕!大概是因为erase的运行方式。

有没有办法仅保留向量的第一个50元素?似乎应该很明显,但是我找不到一种方法。

是的,您可以使用std::vector::resize,如果向量的长度大于n。

,则可以截断

请参阅此处:http://www.cplusplus.com/reference/vector/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