我有一个代码,我经常用 0 到 5000 个元素填充一个 vector 。我知道最大值永远不会超过 5000。我不想多次初始化 vector ,我只想做一次
vector<struct> myvector;
myvector.reserve(5000);
但是,要再次填充 vector ,我必须先清除 vector 而不改变其容量。所以通常我调用 myvector.clear();
这是一个 O(n) 操作。我可以做些什么简单的事情来提高它的性能,或者这是它所能得到的最好的吗?
最佳答案
如果你的结构有一个非平凡的析构函数,那么无论它是如何被清空的,都需要为 vector 的所有元素调用它。如果你的结构只有一个普通的析构函数,编译器或标准库实现可以优化析构过程并给你一个 O(1) 操作。
关于C++ 清除或删除 vector 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420357/