相关疑难解决方法(0)

在自定义迭代器上应用reverse_iterator后引用失效

我实现了一个双向迭代器,但它不是对数据结构进行操作,而是返回一个数学系列,可以在两个方向上迭代计算.事实上,我正在迭代整数,使用++和 - 在int上.这意味着数据不存储在不同的结构中,因此当迭代器超出范围时,值也是如此.

尽管如此,我希望下一个代码(最小失败示例)示例能够正常工作,因为迭代器始终保持在范围内.但它不起作用:(

#include <iostream>
#include <iterator>
#include <vector>

class my_iterator : public std::iterator<std::bidirectional_iterator_tag, int> {
  int d_val = 12;
public:
  my_iterator  operator--(int) { std::cout << "decrement--\n"; return my_iterator(); }
  my_iterator &operator--()    { std::cout << "--decrement\n"; return *this; }
  my_iterator  operator++(int) { std::cout << "increment++\n"; return my_iterator(); }
  my_iterator &operator++()    { std::cout << "++increment\n"; return *this; }

  int &operator*() { std::cout << "*dereference\n"; return d_val; }

  bool operator==(my_iterator const  &o) { return false; }
  bool operator!=(my_iterator const  &o) { …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 reverse-iterator c++14

6
推荐指数
1
解决办法
444
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

reverse-iterator ×1