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

Vector容器嵌套容器

void Vector()
{
	std::vector> V;
	//创建小容器
	std::vector v1;
	std::vector v2;
	std::vector v3;
	std::vector v4;
	std::vector 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>::iterator it = V.begin(); it != V.end(); it++)
	{
		for (std::vector::iterator vit = (*it).begin(); vit != (*it).end(); vit++)
		{
			std::cout << *vit << " ";
		}
		std::cout << std::endl;
	}
}

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

STL标准库模板学习笔记(三)——Vector(2)_第1张图片

Vector容器赋值

方法:

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

首先构造打印函数

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

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

	//n和elem赋值
	std::vector 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 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);
}

你可能感兴趣的:(c++,学习)