C++ STL中向量大小和容量的区别
在本文中,我们将研究C++ STL中向量大小和容量的 区别 。向量的大小被定义为向量中存在的元素总数。向量是动态数组,因此它会随用户输入而改变,而静态数组则是使用下标运算符“[]”定义的,它们在整个程序中保持不变,如果我们尝试输入超过数组大小的内容,则会抛出错误。向量可以根据用户的输入更改其大小和容量。向量是具有自动调整大小的功能的动态数组,当插入或删除元素时,向量可以自动调整大小。
在向量的情况下:
向量<int> v;
v.size() <-- 获取向量大小。
v.capacity() <-- 获取向量容量。
示例1:
//C++程序演示大小功能
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
for (int i = 0; i < 9; i++)
v.push_back(i);
cout << v.size();
return 0;
}
输出
9
上面的代码和其输出清楚地显示了向量的大小表示我们存储在向量中的元素总数。但是容量与大小有所不同。
示例2:
//C++程序演示容量为9个元素的向量的功能
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
for (int i = 0; i < 9; i++)
v.push_back(i);
cout << v.capacity();
return 0;
}
输出
16
您可以很容易地观察到向量的大小和容量之间的差异。当向量的大小等于容量时,向量会自动增加其容量,并使其两倍大。
size和capacity之间有一个区别。向量的容量是它可以容纳的元素总数。容量是总存储量,而向量中有多少内容(元素)是向量大小所代表的。
示例3:
//C++程序演示向量的大小和容量
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
for (int i = 0; i < 9; i++)
v.push_back(i);
cout << v.size();
cout << endl << v.capacity();
return 0;
}
输出
9
16
这种差异的原因是向量的内部实现。与其容量僵硬的静态数组不同,向量的容量是灵活的,因为向量具有动态特性。
因此,数组的大小为9,因为向量中仅有9个元素,尽管其容量为16,这意味着您可以存储多达16个元素,一旦元素数量等于容量,它将自动修改并再次增加其容量。