保留 std::vector 的前 N 个元素<>并删除其余元素
Keeping the first N elements of a std::vector<> and removing the rest
我在我的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
相关文章:
- C++如何通过用户输入删除列表元素
- 使用函数"remove"删除重复元素
- 如何通过 getter 函数删除矢量的元素?
- 从控制台中删除最后打印的元素
- 如何从存储在std::映射中的std::集中删除元素
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 删除列表中的第n个元素
- 从矢量中删除元素后出现隔离错误
- 删除映射和分割错误中的一个过去结束元素
- 如何使用remove_if从矢量中删除元素
- 如何从使用 for 循环中的矢量大小的矢量中删除元素
- 从矢量中删除空元素
- 关于比较两个无序数组并删除 a[] 中可以在 b[] 中找到的元素的问题
- 删除指针数组 (C++) 中的元素
- 删除列表 c++ 中的最后 3 个元素
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 为什么通过 vector<reference_wrapper> 的元素删除引用的值<T>不会使向量无效?
- 从std::multiset的第i个元素删除到末尾
- 删除 [] 是否等于每个元素删除.C++
- std::列出元素删除后节点的内存回收