zoukankan      html  css  js  c++  java
  • STL学习笔记(迭代器相关辅助函数)

    advance()可令迭代器前进

    #include <iterator>
    void advance(InputIterator& pos,Dist n);

    面对Random Access(随机存取)迭代器,该函数只是简单的调用pos+=n。而对于其他任何类型的迭代器则调用++pos(--pos)n次。

    distance()可以处理迭代器之间的距离

    #include <iterator>
    Dist distance(InputIterator pos1,InputIterator pos2);

    面对Random Access迭代器,该函数仅仅传回pos2-pos1。而对于其他迭代器,则会不断递增pos1,知道抵达pos2为止,然后传回递增次数。

    iter_swap()可交换两个迭代器所指内容

    #include <iterator>
    void iter_swap(ForwardIterator pos1,ForwardIterator pos2);

    迭代器型别不必相同,但所指的两个值必须可以相互赋值。

    Vector迭代器的递增

    考虑下面例子:

    std::vector<int> coll;
    ...
    if(coll.size()>1){
        sort(++coll.begin(),coll.end())
    }

    通常编译sort()会失败。因为vector一般实作为一般指针,而C++不允许修改任何基本型别(包括指针)的暂时值。而对于struct和class则允许。

    如果vector实作为一般指针,则会编译失败,如果vector实作为class,则可以通过编译。

  • 相关阅读:
    oracle 第12章 归档日志文件
    oracle 第09章 参数文件
    oracle 第11章 重做日志文件
    oracle 第10章 控制文件
    oracle 第14章 表空间管理
    linux yum源配置
    oracle 第08章 用户、权限、角色管理
    oracle 第07章 网络配置管理
    第二阶段冲刺-06
    第二阶段冲刺-05
  • 原文地址:https://www.cnblogs.com/runnyu/p/4827642.html
Copyright © 2011-2022 走看看