【发布时间】:2018-03-22 21:20:57
【问题描述】:
我真的是 C++ 新手,我刚刚开始尝试它。这是我刚刚经历的一些代码:
#include <iostream>
#include <vector>
int main() {
std::vector<int> v;
std::cout << "Capacity of v is " << v.capacity() << '\n';
v.resize (100);
std::cout << "Capacity of v after resize is " << v.capacity() << '\n';
v.insert (v.begin(), 2);
std::cout << "Capacity of v after insert is " << v.capacity() << '\n';
}
我得到以下输出:
v的容量为0 调整大小后 v 的容量为 100 插入后 v 的容量为 200现在,我了解到当容量变得太小时,向量会重新分配自己,例如由于插入。但我以为我有100个容量?而现在我只想插入 2。为什么 2 不适合 100 的容量?好像没看懂。
【问题讨论】:
-
如果你想增加更多的容量,那就是
reserve,而不是resize。 -
因为
resize已经有100个元素了 -
哦!我才意识到这一点。非常感谢你。好像我把这两个混为一谈了。真的很抱歉!
-
在您的
resize(100);之后添加这一行:for(const auto &it:v) std::cout<<it<<" ";并运行程序。你会明白,为什么。 -
在你的示例代码中,除了看
v.capacity(),还要看v.size()。这样会更清楚v.resize(100)的作用是什么。