首页 > 解决方案 > 向量的容量?

问题描述

根据 c++ 参考,vector 的 .capacity() 函数返回“分配的存储容量的大小”。

这是否意味着向量 {1} 应该像数组一样具有 sizeof(1) 的容量?如果是这样,那么为什么这段代码:

int main() {
  vector<int> v = {1};
  cout << v.capacity() << endl;
  return 0;
}

产生 1 而不是 4(sizeof(v[0]))?

我刚开始学习 C++,如果我听起来很愚蠢,请原谅我。

标签: c++vector

解决方案


向量的capacity()更好地表示为“当前留出的可用于存储的空间量”,以可以存储的潜在元素的数量表示。注意like size(),这是元素的数量,而不是字节的数量。

例如,一个向量可能有size()3 和capacity()4 的 a:这表示它当前存储 3 个元素,并且在需要重新分配之前最多可容纳 4 个元素(总共)。

另一方面,sizeof返回给定类型的对象所需的字节数,并在编译时确定。例如,如果您想要向量当前分配用于存储的字节数,您可以执行vector.capacity() * sizeof(vector[0]).


推荐阅读