STL标准模板库学习笔记(四)——Vector(3)

插入与删除

方法:

  • push_buck(ele) 尾部插入元素ele

  • pop_back() 删除最后一个元素

  • insert(const_iterator pos,ele) 迭代器指向位置pos插入元素ele

  • insert(const_iterator pos,int count ,ele) 迭代器指向位置pos插入count个元素ele

  • erase(const_iterator pos) 删除迭代器指向的元素

  • erase(const_iterator start,const_iterator end) 删除迭代器指从start到end之间的元素

  • clear()删除容器中所有元素

void Vector()
{
	std::vector<int> V1;
	//尾插
	for (int i = 0; i < 10; i++)
	{
		V1.push_back(i);
	}
	//遍历
	Printvector(V1);
	
	//尾删
	V1.pop_back();
	Printvector(V1);
	//插入
	V1.insert(V1.begin(), 100);
	Printvector(V1);
	V1.insert(V1.begin(),2, 1000);
	Printvector(V1);
	//删除
	V1.erase(V1.begin());
	Printvector(V1);
	V1.erase(V1.begin(),V1.end()); //V1.clear();
	Printvector(V1);

}

数据存取

方法:

  • at(int idx) 返回索引idx所指的数据

  • operator[] 返回索引idx所指的数据

  • front() 返回容器第一个数据元素

  • back() 返回容器最后一个数据元素

void Vector()
{
	std::vector<int> V1;
	//尾插
	for (int i = 0; i < 10; i++)
	{
		V1.push_back(i);
	}
	//[]访问
	for (int i = 0; i < V1.size(); i++)
	{
		std::cout << V1[i] << " ";
	}
	std::cout << std::endl;
	//at访问
	for (int i = 0; i < V1.size(); i++)
	{
		std::cout << V1.at(i) << " ";
	} 
	std::cout << std::endl;
	//获取第一个元素
	std::cout << "第一个元素为: " << V1.front() << std::endl;
	//获取最后一个元素
	std::cout << "最后一个元素为: " << V1.back() << std::endl;


}

结果为:

Vector容器互换

实现两个容器内元素进行互换

方法:

swap(vec) 将vec容器内元素与本身容器内元素互换

 

void Vector()
{
	std::vector<int> V1;
	//尾插
	for (int i = 0; i < 10; i++)
	{
		V1.push_back(i);
	}
	Printvector(V1);

	std::vector<int> V2;
	for (int j = 10; j > 0; j--)
	{
		V2.push_back(j);
	}
	Printvector(V2);
}

 交换前结果:

 交换:

V1.swap(V2);

交换后结果:

 交换的实际用途

收缩内存空间

std::vector<int>(V).swap(V);

其中std::vector<int>(V)为匿名对象,.swap()做容器交换

 

Vector预留空间

方法:

reserve(int len) 容器预留len个元素长度,预留位置不初始化,元素不可访问

 预留前:

void Vector()
{
	int num = 0;
	int* p = NULL;
	std::vector<int> V;
	for (int i = 0; i < 100000; i++)
	{
		V.push_back(i);
		if (p != &V[0])
		{
			p = &V[0];
			num++;
		}
	}
	std::cout << "num =  " << num << std::endl;
}

 V.reserve(100000)  //预留

 

Vector完结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值