zoukankan      html  css  js  c++  java
  • Effective_STL 学习笔记(二十六) 尽量使用 iterator 代替 const_iterator,reverse_iterator和const_reverse_iterator

    每个标准容器类都提供四种迭代器类型,对于container<T>而言:

    1     iterator            // 的作用相当于T*,
    2     const_iterator        // 相当于 const T*(也可 T const*)
    3     reverse_iterator      // 相当于 T*
    4     const_reverse_iterator  // 相当于 const T*

    有些方法只接受 iterator 类型的参数

    1   iterator insert( iterator position, const T& x );
    2   iterator erase ( iterator position );
    3   iterator erase ( iterator rangeBegin, iterator rangeEnd );

    图片显示了从iterator到const_iterator、从iterator到reverse_iterator和从reverse_iterator到const_reverse_iterator可以进行隐式转换。

    reverse_iterator 可以通过调用 base 成员函数转换为 iterator

    const_reverse_iterator 可以通过 base 成员函数转换为 const_iterator

    但是 const_iterator 转换得到一个 iterator,也无法从 const_reverse_iterator 得到 reverse_iterator

    尽量使用 iterator 取代 const 或者 reverse 类型的迭代器:

    1. insert 和 erase 的一些版本要求 iterator,如果调用这些函数就必须产生 iterator

    2. 不可能把 const_iterator 隐式转换成 iterator

    3. 从 reverse_iterator 转换而来的 iterator 在转换之后可能需要相应的调整

    所以尽量使用 iterator 代替 const 或 reverse 类型的迭代器,可以使容器的使用更简单,更高效

  • 相关阅读:
    使用XE7并行库中的TTask(转)
    Delphi xe7并行编程快速入门(转)
    Pre-compile (pre-JIT) your assembly on the fly, or trigger JIT compilation ahead-of-time (转)
    使用RemObjects Pascal Script (转)
    Remobjects SDK 服务器搭建
    toString()方法
    环境变量
    jstl标签学习
    SQL的各种join
    Mybatis的一些配置
  • 原文地址:https://www.cnblogs.com/kidycharon/p/10033060.html
Copyright © 2011-2022 走看看