我正在努力有效地使用 vector 。所以我先保留内存,然后再使用vector。但是在我尝试使用 [] 运算符填充 vector 之后, vector 的大小仍然为零。为什么会这样?
vector Vec;
Vec.reserve(10);
Vec[0] = 2.0;
Vec[1] = 3.0;
...
最佳答案
reserve()
仅在后备存储中保留空间,因此后续推送的元素不必重新分配(直到超出保留空间)。虽然它不会改变 vector 的实际大小,因此您的 Vec[0] =
访问实际上是在 vector 的末尾运行。
你可以使用
vector Vec;
Vec.resize(10);
Vec[0] = 2.0;
Vec[1] = 3.0;
如果你愿意,大小将是 10。或者如果此时你希望大小仅为 2,但仍保留空间以避免多次重新分配,你可以使用
vector Vec;
Vec.reserve(10);
Vec.push_back(2.0);
Vec.push_back(3.0);
关于c++ - std::vector 大小在尝试填充后保持为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14736741/