STL中最常用的容器为Vector,可以理解为数组,下面我们在这个容器中插入数据、并遍历这个容器
容器:Vector
算法:for_each
迭代器:vector<int>::iterator
#include<iostream>
#include<vector> //STL中的容器都有自己的头文件,如果要使用,需要包含
using namespace std;
int main(){
//创建一个vector容器
vector<int> v;
//push_back(),尾插数据
v.push_back(10);
v.push_back(20);
v.push_back(30);
//第一种遍历方式
//通过迭代器访问vector中的元素
vector<int>::iterator vcBegin = v.begin(); //起始迭代器,指向容器第一个元素
vector<int>::iterator vcEnd = v.end(); //结束迭代器,指向容器最后一个元素下一个位置
//如果起始迭代器,没有和结束迭代器指向同一个位置,那么就遍历、打印
//正向遍历
while (vcBegin != vcEnd){
cout << *vcBegin << endl;
vcBegin++;
}
//反向遍历
//需要让起始迭代器回到初始位置
vcBegin = v.begin();
while (vcEnd != vcBegin){
cout << *(vcEnd - 1) << endl;
vcEnd--;
}
system("pause");
return 0;
}
#include<iostream>
#include<vector> //STL中的容器都有自己的头文件,如果要使用,需要包含
using namespace std;
int main(){
//创建一个vector容器
vector<int> v;
//push_back(),尾插数据
v.push_back(10);
v.push_back(20);
v.push_back(30);
//第二种遍历方式、和上面的原理一样
for(vector<int>::iterator b = v.begin();b != v.end();b++){
cout << *b << endl;
}
system("pause");
return 0;
}
#include<iostream>
#include<vector> //STL中的容器都有自己的头文件,如果要使用,需要包含
#include<algorithm> //算法头文件
using namespace std;
//用于for_each()中的回调函数
void func(int val){
cout << val << endl;
}
int main(){
//创建一个vector容器
vector<int> v;
//push_back(),尾插数据
v.push_back(10);
v.push_back(20);
v.push_back(30);
//第三种遍历方式,使用遍历算法for_each,必须包含算法头文件
//for_each(起始迭代器,结束迭代器,回调函数)
for_each(v.begin(),v.end(),func);
system("pause");
return 0;
}
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
class Person{
public:
string name;
int age;
Person(string name,int age){
this->name = name;
this->age = age;
}
};
void showPerson(Person p){
cout << "姓名:" << p.name << "年龄:" << p.age << endl;
}
int main(){
vector<Person> persons;
persons.push_back(Person("lucy",12));
persons.push_back(Person("tom",18));
vector<int> v;
for_each(persons.begin(),persons.end(),showPerson);
system("pause");
return 0;
}