📅  最后修改于: 2023-12-03 15:13:57.769000             🧑  作者: Mango
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()
函数进行修改。