C++stl中的vector用法

该文展示了如何在C++中使用std::vector,包括初始化、赋值、遍历、容量调整、元素插入与删除等操作。通过示例函数test01和test02详细解释了二维vector的处理以及各种vector成员函数的用法。
摘要由CSDN通过智能技术生成
#include<iostream>
#include<vector>
void vectorPrint(std::vector<int>& v)
{
	for (std::vector <int>::iterator it = v.begin(); it != v.end(); it++)
		std::cout << *it << " ";
	std::cout << std::endl;
}               //输出vector
void test01()
{
	std::vector<std::vector<int>>v;
	std::vector <int>v1;
	std::vector <int>v2;
	std::vector <int>v3;
	std::vector <int>v4;
	for (int i = 0; i < 4; i++)
	{
		v1.push_back(i);
		v2.push_back(i + 1);
		v3.push_back(i + 2);
		v4.push_back(i + 3);
	}
	v.push_back(v1);
	v.push_back(v2);
	v.push_back(v3);
	v.push_back(v4);
	
	for (std::vector<std::vector <int>>::iterator it = v.begin(); it != v.end(); it++)
	{
		for (std::vector <int>::iterator vit = (*it).begin(); vit != (*it).end(); vit++)
			std::cout << *vit << " ";
		std::cout << std::endl;
	}
}                                      //二维vector数组用迭代器使用
void test02()
{
	//创建vector
	std::vector <int>v(5, 19);              //初始化v中为5个19
	vectorPrint(v);
	std::vector <int>v1(v.begin(), v.end());//v1为v的开头到结尾  v1={19,19,19,19,19}
	vectorPrint(v1);
	std::vector<int>v2;
	vectorPrint(v2);
	std::vector<int>::iterator it=v.begin();

	//赋值vector
	v2 = v1;                            //v1中的元素赋值给v2
	v2.assign(10, 100);                  //v2中有10个100
	if (v.empty())                        //empty()判断v中的元素是否为空,为空返回true
		std::cout <<"v为空:" << v.empty() << std::endl;
	else
		std::cout <<"v不为空:" << v.empty() << std::endl;
	std::cout <<"v的容量:" << v.capacity() << std::endl;   //返回v的容量
	std::cout << "v的元素数量" << v.size() << std::endl;       //返回v中元素的数量
	v.resize(7,2);                            //重新指定v的大小 长度过长的用2补齐,默认为零
	vectorPrint(v);                                         //长度不足删去后边的元素
	v.push_back(100);                        //在v后边加上一个元素100
	vectorPrint(v);
	v.pop_back();                            //删除最后一个元素
	vectorPrint(v);
	v.insert(v.begin(), 99);                 //在v中的首元素插入99;注意为迭代器
	vectorPrint(v); 
	v.insert(v.begin(), 5, 25);             //在v开始插入5个25
	vectorPrint(v);
	v.erase(v.begin());                            //删除首位置的元素
	vectorPrint(v);
	v1.clear();                              //清空v1所有元素
	vectorPrint(v1);
	std::cout << v[1] << std::endl;
	std::cout << v.at(1) << std::endl;       //访问1位置的元素
	std::cout << v.front() << std::endl;     //访问首元素
	std::cout << v.back() << std::endl;      //访问最后一个元素
	v.swap(v1);
	vectorPrint(v);
	vectorPrint(v1);                          //v1与v元素互换
	v1.swap(v);
	std::vector <int>(v).swap(v);             //使v的容量变成v中元素个数的容量,缩小内存,从vector<int>(v)为匿名对象,用完之后会被回收释放
	v.reserve(100);                        //v预留100个元素的容量,但是v中其他位置没有元素,只有内存空间






}
int main()
{
	test01();
	test02();
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值