【问题标题】:Filtered const_iterator operator++(int)过滤的 const_iterator operator++(int)
【发布时间】:2013-12-10 22:29:09
【问题描述】:

我想问一下这是否是 const iterator operator++(int) 的正确实现?

const_iterator operator++(int) {
   const_iterator previous(pointer,end,filter);
   while(pointer!=end_){
         pointer++;
         if(filter(*pointer)) return previous;
   }
        return const_iterator(end,end,filter);
}

pointer-指向当前元素的指针,end-指向end的指针,filter-过滤函数

【问题讨论】:

  • 如果您认为实际查看迭代器类的定义至少会有所帮助,那么您再正确不过了。

标签: c++ iterator operators


【解决方案1】:

无论你是否到达终点,都应该返回previous

在预增量方面实现这一点可能是有意义的:

const_iterator previous(*this);
++(*this);
return previous;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 2016-03-12
    • 2021-12-01
    • 2012-09-30
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    相关资源
    最近更新 更多