STL标准库模板学习笔记(三)——Vector(2)

Vector容器嵌套容器

void Vector()
{
	std::vector<std::vector<int>> V;
	//创建小容器
	std::vector<int> v1;
	std::vector<int> v2;
	std::vector<int> v3;
	std::vector<int> v4;
	std::vector<int> v5;

	//向小容器中添加数据
	for (int i = 0; i < 4; i++)
	{
		v1.push_back(i + 1);
		v2.push_back(i + 2);
		v3.push_back(i + 3);
		v4.push_back(i + 4);
		v5.push_back(i + 5);
	}

	//将小容器添加到大容器中
	V.push_back(v1);
	V.push_back(v2);
	V.push_back(v3);
	V.push_back(v4);
	V.push_back(v5);

	//通过大容器遍历数据
	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;
	}
}

(*it)解引用出来的是存放小容器的地址,即存放小容器std::vector<int>的地方,此时的小容器可以看作大容器的一个实例

Vector容器赋值

方法:

  • vector& operator=(const vector &vec);    重载等号赋值
  • assign(beg,end)   将[beg,end]区间中的数据拷贝赋值给本身
  • assign(n,elem)        将n个elem拷贝赋值给本身

首先构造打印函数

void Printvector(std::vector<int>& V)
{
	for (std::vector<int>::iterator it = V.begin(); it != V.end(); it++)
	{
		std::cout << *it << " ";
	}
	std::cout << std::endl;
}
void Vector()
{
	std::vector<int> V1;
	for (int i = 0; i < 10; i++)
	{
		V1.push_back(i);
	}
	Printvector(V1);
	// 赋值 operator=
	std::vector<int> V2;
	V2 = V1;
	Printvector(V2);

	//assign
	std::vector<int> V3;
	V3.assign(V1.begin(), V1.end());
	Printvector(V3);

	//n和elem赋值
	std::vector<int> V4;
	V4.assign(10, 100);
	Printvector(V4);
}

Vector容量和大小

方法:

  • empty()         判断容器书否为空
  • capacity()        容器的容量 
  • size()        返回容器中元素的个数
  • resize(int,num)        重新指定容器的长度为num,若容器边长,则以默认值填充新位置;若容器变短,则末尾超出容器长度的元素被删除。
  • resize(int num,elem)        重新指定容器的长度为num,若容器边长,则以elem值填充新位置;若容器变短,则末尾超出容器长度的元素被删除。
void Vector()
{
	std::vector<int> V1;
	for (int i = 0; i < 10; i++)
	{
		V1.push_back(i);
	}
	Printvector(V1);

	if (V1.empty())
	{
		std::cout << "V1为空" << std::endl;
	}
	else
	{
		std::cout << "V1不为空" << std::endl;
		std::cout << "V1的容量是:" << V1.capacity() << std::endl;
		std::cout << "V1的大小是:" << V1.size() << std::endl;
	}
	V1.resize(15);
	Printvector(V1);
	V1.resize(20,100);
	Printvector(V1);
	V1.resize(5);
	Printvector(V1);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值