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 的转换可能需要迭代器的调整。
  • 相关阅读:
    操作系统:进程间的相互作用(多线程基础)
    一个互联网研发团队的标准配置
    一个电商项目的功能模块梳理2
    一个电商项目的功能模块梳理2
    一个电商项目的功能模块梳理
    一个电商项目的功能模块梳理
    CTO、技术总监、首席架构师的区别
    CTO、技术总监、首席架构师的区别
    论代码稳定
    论代码稳定
  • 原文地址:https://www.cnblogs.com/yangyingchao/p/3409413.html
Copyright © 2011-2022 走看看