zoukankan      html  css  js  c++  java
  • Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor

    Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor

    1 Iterator 的类型

    标准容器提供了四种迭代器,以 conainer<T> 为例:

    • itertor:
      形如 T* ,正向增长。
    • const_itertor:
      形如 const T * ,指向内容只读,正向增长。
    • reverse_itertor:
      形如 T* ,反向增长。
    • const_reverse_itertor:
      形如 const T * ,指向内容只读,反向增长。

    2 迭代器之间的转换

    他们之间的转换关系如下图所示:

    iterator_conversion.png

    Figure 1: Conversion between iterators

    ./images/iterator_conversion.dot

    其中值得注意的是, reverse_iterator 可以通过 base() 来转换到 iterator ,但这个转换可能并不是我们真正需要的那个。而除此之外,剩余的两种迭代器都无法转换成 iterator

    3 Iterator is Special

    瞅一眼 vector<T> 的几个方法:

    iterator insert(iterator p, const T& x);
    iterator erase(iterator p);
    iterator erase(iterator rangebegin, iterator rangeEnd);
    

    这里用到的都是 iterator

    4 总结:

    Prefer Iterator, 原因:

    • 若干函数(插入,删除等)需要的都是 iterator
    • const_iterator 不能隐式地转换成 iterator
    • reverse_iteratoriterator 的转换可能需要迭代器的调整。
  • 相关阅读:
    Java学习之Jdk配置
    Socket网络模型之Select模型
    c#之初见反射
    c++读取文件夹中的文件
    C#泛型的初步理解
    C#接口简单介绍
    c#类,属性,方法和对象基本介绍
    事件的基本认识
    委托的基本认识
    在Xshell中使用rz命令上传文件出现乱码且文件无法删除的解决办法
  • 原文地址:https://www.cnblogs.com/yangyingchao/p/3409413.html
Copyright © 2011-2022 走看看