C++ 清除或删除 vector 的最快方法

标签 c++ performance vector

我有一个代码,我经常用 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/

相关文章:

objective-c - NSString的高效字符处理

mysql - 日期时间类型和整数类型在排序时是否存在巨大的性能差异? Rails 4 和 MySQL

c++ - 在 Qt 的槽函数中修改参数是否安全?

c++ - 这个 C++ 结构初始化技巧安全吗?

.net - LINQ to SQL/LINQ to Collections 性能

C++ 检查类对象是否包含某个元素

c++ - 在同一对象内插入 vector

c++ - std 库中有什么函数可以对 vector 进行二进制搜索并找到元素?

c++ - 在默认构造函数中初始化 vector 变量?

c++ - 没有用于调用通用函数的匹配函数