迭代器是容器的一种遍历方式,每种容器都定义了自己的迭代器类型

声明一个迭代器:

  容器名称<数据类型>::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():删除向量尾部的数据

.....

容器STL

 容器STL

 

 

2、遍历方式

vector向量支持两种方式遍历,因为可以认为vector是一种动态数组,所以可以使用数组下标的方式,也可以使用迭代器

 

  3、二维动态数组

容器STL

   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门学科的成绩对每个人排序

 

容器STL
#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;
}
View Code

相关文章: