繁体   English   中英

有没有类似于循环(循环)迭代器的东西?

[英]Is there something akin to a looping (circular) iterator?

我想知道是否有某种迭代器可以迭代std :: string中的值,当它到达结尾时从头开始。 换句话说,该对象将无限地迭代,一遍又一遍地吐出相同的值序列。

谢谢!

生成器功能可以是那样。 Boost Iterator有一个迭代器适配器:

示例: http//coliru.stacked-crooked.com/a/267279405be9289d

#include <iostream>
#include <functional>
#include <algorithm>
#include <iterator>
#include <boost/generator_iterator.hpp>

int main()
{
  const std::string data = "hello";
  auto curr = data.end();

  std::function<char()> gen = [curr,data]() mutable -> char
  { 
      if (curr==data.end())
          curr = data.begin();
      return *curr++;
  };

  auto it = boost::make_generator_iterator(gen);
  std::copy_n(it, 35, std::ostream_iterator<char>(std::cout, ";"));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM