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 的转换可能需要迭代器的调整。
  • 相关阅读:
    PostgreSQL使用MySQL外表(mysql_fdw)
    使用node+puppeteer+express搭建截图服务
    零碎知识
    miniconda 搭建tensorflow框架
    有效需求分析阅读笔记(六)
    有效需求分析阅读笔记(五)
    索引原理和优势
    存储过程的优缺点
    RestSharp
    在vue中安装sass/scss报错
  • 原文地址:https://www.cnblogs.com/yangyingchao/p/3409413.html
Copyright © 2011-2022 走看看