什么是capacity()
的 std::vector
哪个是使用默认构造函数创建的?我知道 size()
为零。我们可以声明一个默认构造的 vector 不调用堆内存分配吗?
这样可以使用单个分配创建具有任意保留的数组,例如 std::vector<int> iv; iv.reserve(2345);
.假设由于某种原因,我不想启动 size()
在 2345 上。
例如,在 Linux 上(g++ 4.4.5,内核 2.6.32 amd64)
#include <iostream>
#include <vector>
int main()
{
using namespace std;
cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl;
return 0;
}
打印 0,10
.这是一个规则,还是依赖于 STL 供应商?
最佳答案
标准没有指定初始 capacity
一个容器应该是,所以你依赖于实现。一个常见的实现将从零开始容量,但不能保证。另一方面,没有办法改进您的 std::vector<int> iv; iv.reserve(2345);
策略。所以坚持下去。
关于c++ - C++中 vector 的初始容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271017/