zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    bzoj 1017 魔兽地图DotR
    poj 1322 chocolate
    bzoj 1045 糖果传递
    poj 3067 japan
    timus 1109 Conference(二分图匹配)
    URAL 1205 By the Underground or by Foot?(SPFA)
    URAL 1242 Werewolf(DFS)
    timus 1033 Labyrinth(BFS)
    URAL 1208 Legendary Teams Contest(DFS)
    URAL 1930 Ivan's Car(BFS)
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4752498.html
Copyright © 2011-2022 走看看