• STL迭代器


    迭代器的基本原理

    • 迭代器是一个"可遍历STL容器内部分或全部元素"的对象
    • 迭代器指出容器中的一个特定位置
    • 迭代器就如同一个指针
    • 迭代器提供对一个容器中的对象的访问方法,并且可以定义容器中对象的范围
    • 迭代器就像一个指针

    迭代器的分类 

    输入迭代器:

    又称为"只读迭代器",它从容器中读取元素,只能一次读入一个元素向前移动,只支持一遍算法,同一个输入迭代器不能两遍遍历一个序列

    输出迭代器:

    又称为"只写迭代器",它往容器中写入元素,只能一次写入一个元素向前移动,同一个输出迭代器不能两边遍历一个序列。

    正向迭代器:

    组合输入迭代器和输出迭代器的功能,还可以多次解析一个迭代器指定位置,可以对一个值进行多次读/写

    双向迭代器:

    组合正向迭代器的功能,还可以通过操作符向后移动位置

    随机访问迭代器:

    组合双向迭代器的功能,还可以向前向后跳过任意个位置,可以直接访问容器中任何位置的元素

    双向迭代只能一步一步的走,随机迭代器可以跨很多步走

    vector与迭代器的配合使用 

    vector  vecInt;                //假设包含1,3,5,7,9元素

    vector::iterator it;            //声明容器vector迭代器

    it = vecInt.begin();

    it++  it+=2....

    1. //正向遍历
    2. vector<int> vecInt;
    3. for(vector<int>::iterator it=vecInt.begin();it!=vecInt.end();++it)
    4. {
    5. int tmp = *it;
    6. cout<"\t";
    7. }
    8. //逆向遍历
    9. for(vector<int>::reverse_iterator it=vecInt.rbegin();it!=vecInt.rend(),++it)
    10. {
    11. int tmp;
    12. cout<"\t";
    13. }

    deque容器与迭代器

    deque.begin();                                //返回容器中第一个元素的迭代器

    deque.end();                                   //返回容器中最后一个元素之后的迭代器

    deque.rbegin();                               //返回容器中倒数第一个元素的迭代器

    deque.rend();                                  //返回容器中倒数最后一个元素之后的迭代器

    1. for(deque<int>::iterator it=deqInt.begin();it!=deqInt.end(),++it)
    2. {
    3. cout<<*it;
    4. cout<<"";
    5. }
    6. for(deque<int>::reverse_iterator rit=deqInt.rbegin();rit!=deque.rend();++rit)
    7. {
    8. cout<<*rit;
    9. cout<<"";
    10. }

  • 相关阅读:
    MySQL read 查询语句2 统计
    selenium三大等待
    【学习笔记】memcpy_s 函数与坑
    python中值滤波
    EMMC模块电路的PCB设计建议
    Flask狼书笔记 | 06_电子邮件
    平衡二叉搜索树(AVL)——【C++实现插入、删除等操作】
    layui表头多出一列(已解决)
    Kotlin 协程
    Android键盘监听
  • 原文地址:https://blog.csdn.net/weixin_46120107/article/details/126113397