【发布时间】:2016-04-20 04:47:29
【问题描述】:
我需要实现一个类,该类能够按照参数指定的方向迭代容器到类的构造函数。假设该参数称为方向。
我的班级将有方法,有时会根据与此问题无关的其他条件增加迭代器。
所以我的想法是声明 X 类型的成员字段,它可以包含容器的 begin() 或 rbegin() 方法的返回值。该成员文件将在构造函数中初始化。
但问题是 X 的类型是什么。我想我可以实现通过虚函数提供通用接口的包装类。但也许标准库或Boost中有标准实现?
更新:我的设置与@Rabbid76 在他的回答中提供的代码非常匹配。我无法更改struct Iterator 的接口或删除此类。所以我的问题是是否可以用标准库中的东西替换IteratorBase/IteratorImpl。
【问题讨论】:
-
您应该发布一些代码,因为我不太了解您的设置。该类是否为容器类型模板化,然后使用指向容器的指针或其他东西构造它?我建议您将它传递给开始和结束迭代器,并且该类不知道这些迭代器是否是 reverse_iterators。
-
你真正想做什么。听起来您已经设计了解决方案并需要帮助来实施它。如果您尝试描述您要解决的问题,可能会更好;我们有一个关于如何实施它的替代建议。
-
请参阅en.cppreference.com/w/cpp/iterator/make_reverse_iterator,也许还有boost.org/doc/libs/1_49_0/libs/range/doc/html/range/reference/…。请注意,在进行转换时,您总是需要知道自己在处理什么(每个角落都潜伏着一个个错误)
-
@David:Loki Astari:Rabbid76 答案中的代码与我的设置相符。请参阅我的问题中的更新。
-
@LokiAstari:Rabbid76 答案中的代码与我的设置相符。请参阅我的问题中的更新。