Как сгладить итераторы вложенных контейнеров?

Это (еще )(другое )продолжение ответа Джеймса на этот вопрос:Сглаживающий итератор

Как изменить итератор flattenig _так, чтобы он работал рекурсивно? Скажем, у меня есть больше уровней вложенных контейнеров, и я не хочу ограничиваться заданной глубиной вложенности. т.е. сглаживание _итератор должен работать с

std::vector< std::vector < std::vector < int > > >

а также с

std::vector< std::vector < std::vector < std::vector < int > > > >

В моем реальном коде у меня есть массив объектов, которые могут содержать или не содержать такой массив.

редактировать:

Поэкспериментировав с различными способами перебора различных типов вложенных контейнеров, я узнал кое-что, что может быть интересно и другим :

. Доступ к элементам контейнера с помощью вложенных циклов выполняется в 5–6 раз быстрее, чем при использовании итератора.

Плюсы:

  • элементы могут быть сложными объектами, например. (как в моем случае )классы, которые содержат контейнеры.
  • более быстрое выполнение

Минусы:

  • Каждая структура контейнера требует новой реализации цикла
  • . алгоритмы стандартной библиотеки недоступны

Другие плюсы и минусы?

7
задан Community 23 May 2017 в 12:16
поделиться