【发布时间】:2012-09-25 10:36:24
【问题描述】:
是否有一个迭代器的标准实现(即 stdlib 或 boost),它包装了另一个迭代器并只给出它的每个第 n 个元素?
我最初认为这可以通过合适的谓词和 boost::filter_iterator 来实现,但谓词只获取值而不是基迭代器,因此它无法判断到开始的距离。
编辑
提供更多信息:
迭代器应该与std::transform 或std::copy 等函数兼容。
所以它应该像 stdlib 迭代器一样使用。
类似问题:
C++/STL: std::transform with given stride?
Non-unit iterator stride with non-random access iterators
【问题讨论】:
-
你不能这样做吗?
it += x你自己?还是使用std::advance? -
不,我不能这样做,因为这超出了我的能力范围。我想将迭代器传递给一个函数,该函数的接口类似于
fn(beginIterator, endIterator)。 -
嗯,问题是关于现有的,所以我可以阻止自己做。 (恐怕有一些极端情况,实现起来不是那么简单。)我已经搜索了一些,但我不知道要找到我面临的确切问题的关键字。