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 类型的迭代器,可以使容器的使用更简单,更高效

  • 相关阅读:
    Nhibernate对象转JSON
    C# Windows服务
    C# 接收http请求
    C# XML 基础解系
    C# XML 序列化与反序列化
    C# Newtonsoft.Json 应用
    C# 读取自定义XML
    对图片添加水印
    iText: 对pdf文件添加水印
    java对Office文件处理技术(介绍)
  • 原文地址:https://www.cnblogs.com/kidycharon/p/10033060.html
Copyright © 2011-2022 走看看