导航
1.vector,理解为数组,遍历方式
2.vector 存放自定义类型数据
3.容器嵌套容器
———————————————————————————————————
1.vector
容器:vector
算法:for_each()
迭代器:vector< int >::iterator ,也可以将迭代其看成指针
要加头文件#include < vector >
可以将其理解为数组,其遍历有三种方式
第一种
#include <iostream>
using namespace std;
#include <vector>
int main()
{
vector<int> v; //定义为整型
v.push_back(100); //在vector最后添加4个数据
v.push_back(200);
v.push_back(300);
v.push_back(400);
//第一种遍历
vector<int>::iterator inBegin = v.begin(); //返回第一个元素的迭代器
vector<int>::iterator inEnd = v.end();//返回最后一个元素后面一个位置的迭代器
while(inBegin != inEnd)
{
cout<<*inBegin<<endl; //进行输出
inBegin++;
}
return 0;
}
第二种
#include <iostream>
using namespace std;
#include <vector>
int main()
{
vector<int> v;
v.push_back(100);
v.push_back(200);
v.push_back(300);
v.push_back(400);
//第二种遍历
for(vector<int>::iterator it = v.begin();it!=v.end();it++)
{
cout<<*it<<endl;
}
return 0;
}
第三种(算法,增加头文件#include < algorithm>)
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm> //添加一个算法头文件
void Print(int val)
{
cout<<val<<endl;
}
int main()
{
vector<int> v;
v.push_back(100);
v.push_back(200);
v.push_back(300);
v.push_back(400);
//第三种
for_each(v.begin(),v.end(),Print); //写三个参数,最后一个参数填自己编写的函数名
return 0;
}
———————————————————————————————————
2.vector 存放自定义类型数据
#include <iostream>
using namespace std;
#include <string>
#include <vector>
//vector存放自定义数据类型
class Person
{
public:
Person(string name,int age)
{
this->m_name = name;
this->m_age = age;
}
string m_name;
int m_age;
};
//存放自定义类型
void test01()
{
vector<Person>v;
Person p1("小王",1);
Person p2("小王",2);
Person p3("小王",3);
Person p4("小王",4);
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
for(vector<Person>:: iterator it = v.begin();it!=v.end();it++)
{
//*it 看为 Person
//cout<<"姓名:"<<(*it).m_name<<" 年龄:"<<(*it).m_age<<endl;
cout<<"姓名:"<<it->m_name<<" 年龄:"<<it->m_age<<endl;
}
}
//存放自定义指针类型
void test02()
{
vector<Person *>v;
Person p1("小王",1);
Person p2("小王",2);
Person p3("小王",3);
Person p4("小王",4);
v.push_back(&p1);
v.push_back(&p2);
v.push_back(&p3);
v.push_back(&p4);
for(vector<Person*>::iterator it = v.begin();it!=v.end();it++)
{
//*it 看作Person *
cout<<"姓名:"<<(*it)->m_name<<" 年龄:"<<(*it)->m_age<<endl;
}
}
int main()
{
test02();
system("pause");
return 0;
}
———————————————————————————————————
3.容器嵌套容器
相当于是二维数组
例:
#include <iostream>
using namespace std;
#include <string>
#include <vector>
//容器嵌套容器
void test01()
{
//定义大容器
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);
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(vector<vector<int>>::iterator it = v.begin();it!=v.end();it++)
{
//*it 等于 vector<int>
for(vector<int>::iterator its = (*it).begin();its!=(*it).end();its++)
{
cout<<*its<<" ";
}
cout<<endl;
}
}
int main()
{
test01();
system("pause");
return 0;
}