关于vector

介绍

vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

方法

v.assign(beg,end) //将[beg,end)区间的数据赋值给v
v.assign(n,elem) //将n个elem的拷贝复制给v

创建一个vector

1.创建一个int类型的空的vector对象
vector<int> vInts;
2.创建一个包含500个int类型的vector
vector<int> vInts(500); //size大小为500,初始化都是0
3.创建一个包含200个int类型数据的vector,并且初始化为7
vector<int> vInts(200,7);
4.创建一个int的拷贝
vector<int> vInts(200,7);
vector<int> vIntCopy(vInts);//这样2个vector就都一样了

向vector添加一个数据

push_back()
Example
<span style="white-space:pre">	</span>vector<int> vInts;
	int i;
	for (i = 0;i<7;i++)
	{
	<span style="white-space:pre">	</span>vInts.push_back(i);
	}
	for (i = 0;i<7;i++)
	{
		cout<<"vInts.at("<<i<<")="<<vInts.at(i)<<endl;
	}
Oouput
<img src="https://img-blog.csdn.net/20151112104753263?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

访问vector中的数据

<span style="white-space:pre">	</span>1.vector::at()<span style="white-space:pre">		</span>//优先方案,因为at()进行了边界检查(bounds checked)如果访问超过了范围,将抛出一个例外
<span style="white-space:pre">	</span>2.vector::operator[]<span style="white-space:pre">	</span>//容易造成错误
Example
	vector<int> v;
	v.reserve(10);
	for (int i = 0;i<7;i++)
	{
		v.push_back(i);
	}
	try
	{
		//int iVal1 = v[7];//Error!
		int iVal2 = v.at(7);
	}
	catch (const exception& e)
	{
		cout << e.what();
	}
Output

删除vector中的数据

1.erase(pos);  erase(beg,end);//参数为const_iterator
2.pop_back()
3.clear()
Example
	vector<int> vInts;
	int i;
	for (i = 0;i<7;i++)
	{
		vInts.push_back(i);
	}
	cout<<"vInts.size = "<<vInts.size()<<endl;
	for (i = 0;i<vInts.size();i++)
	{
		cout<<"vInts.at("<<i<<")="<<vInts.at(i)<<endl;
	}
	vInts.erase(vInts.begin());
	cout<<"vInts.size = "<<vInts.size()<<endl;
	for (i = 0;i<vInts.size();i++)
	{
		cout<<"vInts.at("<<i<<")="<<vInts.at(i)<<endl;
	}
	vInts.erase(vInts.begin()+2);
	cout<<"vInts.size = "<<vInts.size()<<endl;
	for (i = 0;i<vInts.size();i++)
	{
		cout<<"vInts.at("<<i<<")="<<vInts.at(i)<<endl;
	}
	vInts.pop_back();
	cout<<"vInts.size = "<<vInts.size()<<endl;
	for (i = 0;i<vInts.size();i++)
	{
		cout<<"vInts.at("<<i<<")="<<vInts.at(i)<<endl;
	}
	vInts.clear();
	cout<<"vInts.size = "<<vInts.size()<<endl;
	for (i = 0;i<vInts.size();i++)
	{
		cout<<"vInts.at("<<i<<")="<<vInts.at(i)<<endl;
	}


Output

<span style="white-space:pre">	</span>

vector 中的size和capacity

size 是指容器当前拥有元素的个数
capacity是指容器在必须分配新的存储空间之前可以存放的元素总数。
如vector<int> vInts(10; //capacity = 10;size=10
当pushback一个数进去的时候size+1,但capacity有可能+5或+10
即容器重新分配空间是按现有空间的2倍进行分配,以保证vector的效率!
其中,函数reserve(size_type)只是扩大capacity值,而这些空间还是“野”的,不能用[]访问,只能pushback
resize(size_type)则会重新指定队列的长度,会初始化!

<span style="white-space:pre">		</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值