我应该在知道我将使用多少个元素之前还是之后定义向量中的元素数?

Should I define number of elements in a vector before or after knowing how many elements I'll use?

本文关键字:元素 定义 之后 向量 我应该 多少      更新时间:2023-10-16

我试图理解我应该以哪种方式实现向量,这样我就可以减少我在程序中的运行时间和内存使用,或者这并不重要(仅取决于我的程序对这些元素的计算)?

假设我定义了一个向量但不知道程序中要使用多少个元素但我知道要使用的最大元素数

#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周期,因为如果当前连续位置没有空间,它不必将元素复制到不同的位置。