admin管理员组

文章数量:1611513

(1)容器容量:容器所能容纳元素的个数,通常大于容器的实际存储元素的个数。

s.capacity();//查看容器容量
s.reserve(len);//扩展当前容器的容量,如果len大于当前容器容量,那么将会将容器的容量扩展为len,且不会对新扩展的空间进行初始化;当len小于等于当前容器容量时,什么也不做。

(2)容器大小:容器中当前存在元素的个数。

s.size();//查看当前容器的中元素的个数
s.resize(len);//设置当前容器的容量,如个len大于当前容器中元素的个数,新增的元素将并初始化为0。len小于容器的实际大小时,会将len之后的元素的全部清除为0。

通过情况向容器的容量是大于等于容器的大小的,就像杯子和杯子中的水的关系。一般需要容器的大小不会引起内存的重新分配(向杯子中加水),但修改容器的容量就会导致容器内存的重新分配(原来的杯子太小了,需要换新的杯子)。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
	vector<int> intArr;
	intArr.push_back(1);
	intArr.push_back(2);
	intArr.push_back(3);
	intArr.push_back(4);
	intArr.push_back(5);
	intArr.push_back(6);
	cout << "1、修改前:容器size:" << intArr.size() << ",容器capacity:" << intArr.capacity() << endl;
	vector<int>::iterator viter = intArr.begin();
	for (; viter != intArr.end(); ++viter)
	{
		cout << *viter << ",";
	}
	cout << endl;
	intArr.resize(3);
	intArr.reserve(3);
	cout << "2、修改后、容器size:" << intArr.size() << ",容器capacity:" << intArr.capacity() << endl;
	viter = intArr.begin();
	for (; viter != intArr.end();++viter)
	{
		cout << *viter << ",";
	}
	cout << endl;
	intArr.resize(6);
	intArr.reserve(10);
	cout << "3、修改后、容器size:" << intArr.size() << ",容器capacity:" << intArr.capacity() << endl;
	viter = intArr.begin();
	for (; viter != intArr.end(); ++viter)
	{
		cout << *viter << ",";
	}
	cout << endl;
	return 0;
}

本文标签: 容器容量大小sizeCapacity