• STL之迭代器


    除了每个容器定义的迭代器之外,在标准库头文件iterator中还定义了额外几种迭代器

    1.插入迭代器

    插入迭代器是一种迭代器适配器,它接受一个容器,返回一个迭代器,能实现向容器添加数据

    插入迭代器有3中类型,都是返回一个容器的插入迭代器,区别是所插入的位置不同

    (1)back_inserter(vec):创建一个使用push_back()向vec容器插入元素的迭代器,永远在尾部插入

    (2)front_insterer(vec):创建一个使用push_front()向vec容器插入元素的迭代器,永远在头部插入

    (3)inserter(vec,vec.begin()):创建一个使用insert()向vec容器插入元素的迭代器,第二个参数表示一个迭代器,插入到第二个参数指向的元素之前,它和insert(p,x)的区别是:insert(p,x)在p之前插入,并返回指向先添加元素的迭代器,而这里永远在第二个参数之前插入。

    2.流迭代器

    这些迭代器绑定到输入输出流上,可以读取关联的IO流

    (1)istream_iterator<读取类型> 名称(关联流)

    例如:istream_iterator<int> myistream(cin)表示从标准输入流(键盘)读取数据的迭代器

    istream_iterator<int> eof;表示流的尾后迭代器,可以用这个范围来读取cin中该范围内的数据,对于绑定好流的迭代器,一旦其关联的流遇到文件尾或IO错误,则该迭代器的值就与尾后迭代器相等 

    (2)ostream_iterator<读取类型> 名称(关联流,d)

    例如:ostream_iterator<int> myostream(cout,"hello!")表示向标准输出流(屏幕)写入数据的迭代器,第二个参数表示每次写入元素之后,在元素末尾加一个“hello”字符串

    3.反向迭代器 reverse_iterator

    在容器中从尾元素向首元素移动的迭代器,++操作会移动到前一个元素,直到移动到首前元素位置

    成员函数:base(vec.crend()):会返回vec.crend()对应的普通迭代器,即vec.cbegin()

  • 相关阅读:
    【LeetCode】006 ZigZag Conversion
    【LeetCode】009 Palindrome Number
    【LeetCode】008 String to Integer (atoi)
    【LeetCode】012 013 Roman Integer
    react-native 入门资源合集
    Thread和ExecutorService(一)
    DrawerLayout、CoordinatorLayout、CollapsingToolbarLayout的使用--AndroidSupportDesign练手
    Valid Number
    When Is Cheryl's Birthday
    【笔试】——常用运算符
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4752498.html
Copyright © 2020-2023  润新知