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

时间:2014-02-01 02:26:21

标签: c++ vector

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

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

我试过了:

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

其中kpts是我的向量,表现太可怕了!大概是因为erase的运作方式。

有没有办法只保留向量的第一个50元素?看起来应该很明显,但我找不到办法做到这一点。< / p>

1 个答案:

答案 0 :(得分:39)

是的,您可以使用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