📜  C++ Vector.Capacity()函数(1)

📅  最后修改于: 2023-12-03 15:13:57.769000             🧑  作者: Mango

C++ Vector.Capacity()函数

vector是C++ STL(标准模板库)中的一个容器类,它可以存储各种数据类型的对象,而且容器的大小可以动态改变。vector内部实现了一个动态数组,可以随着元素的插入和删除自动扩展或收缩容器的大小。

vector.capacity()函数返回vector当前可容纳的元素数量,即在不重新分配内存的情况下,可以将元素存储在该vector中的最大元素数量。

#include <iostream>
#include <vector>
using namespace std;
int main() {
  vector<int> v1;
  // 输出当前大小和容量
  cout << "Size: " << v1.size() << ", Capacity: " << v1.capacity() << endl;
  // 添加10个元素
  for (int i = 0; i < 10; i++) {
    v1.push_back(i);
    cout << "Size: " << v1.size() << ", Capacity: " << v1.capacity() << endl;
  }
  return 0;
}

上面的代码定义了一个整型vector对象v1,初始化时没有指定容量大小。首先输出了当前v1的大小和容量,此时容量为0,接着循环添加了10个元素,每次添加后输出其大小和容量。可以看到,当元素数量超出当前容量大小时,vector会自动重新分配内存以扩展容量。

Size: 0, Capacity: 0
Size: 1, Capacity: 1
Size: 2, Capacity: 2
Size: 3, Capacity: 4
Size: 4, Capacity: 4
Size: 5, Capacity: 8
Size: 6, Capacity: 8
Size: 7, Capacity: 8
Size: 8, Capacity: 8
Size: 9, Capacity: 16
Size: 10, Capacity: 16

以上是输出结果,可以看出,当容量不足时,新的容量是原来的2倍。这是vector内部的一个默认机制,可以通过vector.reserve()函数进行修改。