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

标签 c++ vector

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

相关文章:

java - 将 vector 从字符串转换为整数

c++ - 函数中指向 vector vector 的指针给出 'expression must have pointer type' 错误

c++ - 获取 CPU 温度

C++ 连接许多 std::vectors 并删除重复项

r - 在 R : How to replace NA in a Vector found between two integers

c++ - 二维 vector 类型转换

r - 按规则模式的间距向量

c++ - 简单的 boost 智能指针语法问题

c++ - 从递归堆栈帧返回时不保留值?

c++ - 避免在多线程套接字应用程序中重复使用相同的 fd 号