我的std::vector<int>
应用程序中有一个C++
变量。向量的大小在运行时确定,但通常约为1000
。
我已对此向量进行了排序(效果很好),排序后,我只想保留第一个50
元素。
我试过了:
kpts.erase(kpts.begin() + 50, kpts.end());
其中kpts
是我的向量,表现太可怕了!大概是因为erase
的运作方式。
有没有办法只保留向量的第一个50
元素?看起来应该很明显,但我找不到办法做到这一点。< / p>
答案 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