C++ STL vector的容量

关于vector的容量:

vs:如果容量不够时,增加现有容量的一半(向下取增);

vc6.0:如果容量不够时,增加现有容量的一倍;


关于vector的大小:

size()为vector中元素的个数,和容量要区别开。


代码如下:

#define  _SCL_SECURE_NO_WARNINGS

#include  
#include 
#include 
using namespace std;


int main(){

	vector vec;
	cout << vec.capacity() << endl;

	vector vec1(5);
	cout << vec1.capacity() << endl;

	vec1.push_back(1);
	cout << vec1.capacity() << endl;	//空间变成7了,但只有6个元素

	vec1.push_back(1);
	cout << vec1.capacity() << endl;

	vec1.push_back(1);
	cout << vec1.capacity() << endl;	//增加已存在空间的一半(向下取整)进行扩容

	//VC6.0容量不够时,增加现有容量的一倍

	//重设容量
	//reserve() 不能变小,只能变大
	vec1.reserve(100);
	cout << vec1.capacity() << endl;

	vec1.reserve(2);		//就算调用这个,也不会有效果
	cout << vec1.capacity() << endl;

	//size()是元素的个数
	//resize()重设元素个数,不改变大小
	vector vec2(4);
	cout << vec2.size() << endl;
	cout << vec2.capacity() << endl;
	vec2.reserve(100);
	cout << vec2.capacity() << endl;
	cout << vec2.size() << endl;

	vec2.resize(2);
	cout << vec2.size() << endl;
	cout << vec2.capacity() << endl;
	cout << vec2.empty() << endl;
	vec2.resize(0);
	cout << vec2.empty() << endl;
	system("pause");
	return 0;
}

运行结果如下:

C++ STL vector的容量_第1张图片

你可能感兴趣的:(C/C++,C++,STL,C,STL)