blz*_*blz 3 c++ iteration 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, ";"));
}
Run Code Online (Sandbox Code Playgroud)