我应该在知道我将使用多少个元素之前还是之后定义向量中的元素数?
Should I define number of elements in a vector before or after knowing how many elements I'll use?
我试图理解我应该以哪种方式实现向量,这样我就可以减少我在程序中的运行时间和内存使用,或者这并不重要(仅取决于我的程序对这些元素的计算)?
假设我定义了一个向量但不知道程序中要使用多少个元素但我知道要使用的最大元素数
#define MAX 10000
vector<int> eg(MAX);
在另一种情况下,我首先指出有多少个元素,然后相应的大小
vector<int> eg;
int n;
cin >> n;
eg.resize(n);
如果知道vector存储的最大元素数,则最好使用成员函数reserve
。例如
const std::vector<int>::size_type MAX = 10000;
vector<int> eg;
eg.reserve( MAX );
都有。因为当你转到resize
到最终元素数量时,你只会调整到更少的元素数量,这比调整到更多的元素数量(如果你没有设置MAX)需要更少的cpu周期,因为如果当前连续位置没有空间,它不必将元素复制到不同的位置。
相关文章:
- 如何绘制自定义形状的元素?
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 从自定义类获取对象向量中的 max 元素
- 如何访问宏中定义的数组元素
- gtest 期望无序元素与自定义比较器/匹配器一起使用
- 从自定义数据类型向量中删除重复元素
- 如果我想从类型"T"定义元素的容器(来自 STL),那么"T"必须使用默认构造函数?
- 如何在不使用 vector::erase() 的情况下编写自定义 Vector 方法来删除元素?
- C++ - 按自定义数据类型向量的值删除元素
- 打印/修改类对象的特定成员变量,其类定义列表 (STL) 包含的元素类型
- 如何通过引用对用户定义对象的类型集 (STL) 的数组元素进行增强迭代?
- 对自定义元素向量进行排序时出现意外(至少对我来说)行为
- 如何使用某些因素的函数元素定义数组 m 由 n
- 比较两个向量以获得公共元素/定义user1和user2
- 我可以为我的自定义Qt UI元素定义自定义CSS/QSS属性吗?
- 枚举元素定义
- C++类元素定义之类的数组
- 如何将元素定义为与随机访问迭代器指向的元素相同的类型
- 使用结构的特定字符串元素定义无序映射键
- C++ 我知道数组长度,但想知道是否是一种更简洁的数组元素定义方法