Исходя из следующего вопроса: Проверьте, является ли одна строка вращением другой строки
Я думал о создании циклического типа итератора, который принимает диапазон, и мог бы решить вышеупомянутую проблему следующим образом:
std::string s1 = "abc" ;
std::string s2 = "bca" ;
std::size_t n = 2; // number of cycles
cyclic_iterator it(s2.begin(),s2.end(),n);
cyclic_iterator end;
if (std::search(it, end, s1.begin(),s1.end()) != end)
{
std::cout << "s1 is a rotation of s2" << std::endl;
}
Мой вопрос: Есть ли что-то подобное? Я проверил Boost и STL и не имел точной реализации.
У меня есть простая рукописная (производная от std::forward_iterator_tag
специализированная версия std::iterator
), но лучше использовать уже выполненную/протестированную реализацию.