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 的转换可能需要迭代器的调整。
  • 相关阅读:
    前端必须掌握的 docker 技能(2)
    前端必须掌握的 docker 技能(1)
    异步 map 和模块打包
    import 和组件库按需引入
    babel-node 和 nodemon
    linux和mac 终端代理
    yarn.lock 是干什么的
    pwa 总结
    设计模式(5): vue 不监听绑定的变量
    django+celery+redis应用
  • 原文地址:https://www.cnblogs.com/yangyingchao/p/3409413.html
Copyright © 2011-2022 走看看