gpt4 book ai didi

c++ - std::vector 大小在尝试填充后保持为零

转载 作者:太空狗 更新时间:2023-10-29 23:23:21 26 4
gpt4 key购买 nike

我正在努力有效地使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com