目录
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();
}
运行结果