导航
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; }