一篇文章帮你玩转vector容器(C++)

1.vector容器概述

vector容器是一个与数组类似的单元,可以存储若干个值。STL容器是同质的,这样说大家可能听不懂,就是vector容器中存储的值的类型相同
而迭代器能够用来遍历容器的对象

2.vector对象的常用内置函数使用(一部分)

#include<vector>

//返回a的第一个元素
a.front();

//返回a的第i元素,当且仅当a存在
a[i];
//清空a中的元素
a.clear();

//判断a是否为空,空则返回true,非空则返回false
a.empty();

//删除a向量的最后一个元素
a.pop_back();

//删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
a.erase(a.begin()+1,a.begin()+3);

//尾插法
a.push_back(5);

//在a的第一个元素(从第0个算起)位置插入数值5,
a.insert(a.begin()+1,5);

//在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
a.insert(a.begin()+1,3,5);

//b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
a.insert(a.begin()+1,b+3,b+6);

//返回a中元素的个数
a.size();

//返回a在内存中总共可以容纳的元素个数
a.capacity();

//将a的现有元素个数调整至10个,多则删,少则补,其值随机
a.resize(10);

//将a的现有元素个数调整至10个,多则删,少则补,其值为2
a.resize(10,2);

//将a的容量扩充至100,
a.reserve(100);
//b为向量,将a中的元素和b中的元素整体交换
a.swap(b);


3.vector容器存放内置数据类型

#include<iostream>

using namespace std;

#include<vector>

#include<algorithm>//标准STL算法头文件 

//vector容器存放内置数据类型
myprint(int var)
 	{
 		cout<<var<<endl;
	 }
void vectorit()
 {
 	//创建了一个vector容器,先当作数组
	 vector<int> v;
	 
	 //向容器中插入数组
	 v.push_back(15); 
	 
	 v.push_back(24);
	 
	 v.push_back(36);
	 
	 v.push_back(49);
	 
	 //通过迭代器访问容器中的数据
	 vector<int>::iterator itbegin=v.begin();//起始迭代器  指向容器中第一个元素
	 
	  vector<int>::iterator  itend=v.end();//结束迭代器  指向容器中最后一个元素的下一个位置
	  
	  //第一种遍历方式
	  
	 /* while(itbegin!=itend)
	  {
	  	cout<<*itbegin<<endl;//迭代器相当于指针,可以通过解引用访问
	  	
		  itbegin++; 
	   } */
	   //第2种遍历方式
	   for(vector<int>::iterator out=v.begin();out!=v.end();out++)
	   {
	   	cout<<*out<<endl;
	   }
	   //第3种遍历方式   STL
	   //for_each(v.begin(),v.end(),myprint);
 }
int main()
{
	vectorit();
 } 

运行结果
在这里插入图片描述

4.vector容器存放自定义数据类型

#include<iostream>

using namespace std;

#include<vector>

#include<algorithm>//标准STL算法头文件 

//vector容器存放自定义数据类型
class person
{
public:
	person(string name,int age)
	{
		this->m_name=name;
		
		this->m_age=age;
	}
	string m_name;
	
	int m_age;
 } ;
 void vectorit()
 {
 	vector<person>v;
 	
 	person p1("zal",18);
 	
 	person p2("fcb",25);
 	
 	person p3("pcd",33);
 	
 	person p4("fdx",49);
 	
 	person p5("xcd",54);
 	
 	//向容器中插入数据
	 v.push_back(p1);
	 
	v.push_back(p2);
	
	v.push_back(p3);
	
	v.push_back(p4);
	
	v.push_back(p5);
	//遍历容器中的数据
	for(vector<person>::iterator out=v.begin();out!=v.end();out++)
	{
		//cout<<"姓名: "<<(*out).m_name<<"年龄: "<<(*out).m_age;
		//or
		cout<<"姓名: "<<out->m_name<<"年龄: "<<out->m_age<<endl;
		 
	 } 
 }
 int main()
 {
 	vectorit(); 
  } 

运行结果
在这里插入图片描述

5.存放自定义类型的数据类型指针

#include<iostream>

using namespace std;

#include<vector>

#include<algorithm>//标准STL算法头文件 

//vector容器存放自定义数据类型的指针
class person
{
public:
	person(string name,int age)
	{
		this->m_name=name;
		
		this->m_age=age;
	}
	string m_name;
	
	int m_age;
 } ;
 void vectorit()
 {
 	vector<person*>v;
 	
 	person p1("zal",10);
 	
 	person p2("sdf",20);
 	
 	person p3("vfd",30);
 	
 	person p4("nhg",40);
 	
 	person p5("qrh",50);
 	
 	//向容器中插入数据
	v.push_back(&p1);
	
	v.push_back(&p2);
	
	v.push_back(&p3);
	
	v.push_back(&p4);
	
	v.push_back(&p5);
	//遍历容器中的数据
	for(vector<person*>::iterator it=v.begin();it!=v.end();it++)
	{
		
		cout<<"姓名: "<<(*it)->m_name<<"   年龄: "<<(*it)->m_age<<endl;//(*it)在这里是一个指针,it的定义类型为preson*
		 
	 } 
 }
 int main()
 {
 	vectorit();
 }

运行结果
在这里插入图片描述

6.vector容器嵌套vector容器

#include<iostream>

using namespace std;

#include<vector>

#include<algorithm>//标准STL算法头文件 

//vector容器嵌套vector容器
 void vectorit()
 {
 	vector<vector<int> > v;
 	//创建小容器 
 	vector<int>v1; 
 	
 	vector<int>v2; 
 	
 	vector<int>v3; 
 	
 	vector<int>v4; 
 	//向小容器中添加数据
	 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);
	  } 
	  
	  //将小容器插入大容器中
	v.push_back(v1);
	
	v.push_back(v2);
	
	v.push_back(v3);
	
	v.push_back(v4);
	
	//通过大容器,把所有数据遍历一遍
	for(vector<vector<int> >::iterator it=v.begin();it!=v.end();it++)
	{
		//(*it)----相当于一个容器vector<int> 
		for(vector<int>::iterator vit=(*it).begin();vit!=(*it).end();vit++)
		{
			cout<<*vit<<" ";
		}
		cout<<endl;
	}
  } 
int main()
{
	vectorit(); 
}

运行结果
在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>