迭代器是容器的一种遍历方式,每种容器都定义了自己的迭代器类型
声明一个迭代器:
容器名称<数据类型>::iterator 迭代器名称
vector<int>::iterator it;
map<int,int>::iterator it;
set<int>::iterator it;
.......
使用:
for(it=vec.begin();it!=vec.end();it++)
cout<<*it;
二、vector
1、常用操作
empty():判断向量是否为空,为空返回真,否则为假
begin():返回向量(数组)的首元素地址
end(): 返回向量(数组)的末元素的下一个元素的地址
clear():清空向量
front():返回得到向量的第一个元素的数据
back():返回得到向量的最后一个元素的数据
size():返回得到向量中元素的个数
push_back(数据):将数据插入到向量的尾部
pop_back():删除向量尾部的数据
.....
2、遍历方式
vector向量支持两种方式遍历,因为可以认为vector是一种动态数组,所以可以使用数组下标的方式,也可以使用迭代器
3、二维动态数组
4、vector与结构体的使用
struct node { int id; int g[4]; int rank[4]; }; int x;//对第几门学科进行排序 bool cmp(node a,node b) { return a.g[x]>b.g[x]; } vector<node>v(n);//注意是括号,n是容器大小--结构体数组 sort(v.begin(),v.end(),cmp);//按照第x门学科的成绩对每个人排序
#include <iostream> #include <vector> #include <list> #include <map> using namespace std; int main(void) { vector<int> vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5); cout << "向量的大小:" << vec.size() << endl; // 数组下标方式遍历vector for (int i = 0; i < vec.size(); i++) cout << vec[i] << " "; cout << endl; // 迭代器方式遍历vector vector<int>::iterator itor = vec.begin(); for (; itor != vec.end(); itor++) cout << *itor << " "; cout << endl; return 0; }