История изменений
Исправление staseg, (текущая версия) :
Во-первых, я бы не стал засовывать алгоритм прохода контейнера внутрь, а прилепил функцию for_each сбоку. Под каждый контейнер она затачивается перегрузкой и/или специализацией.
Далее, for_each оптимально, в т.ч. в несколько потоков, проходит весь контейнер и вызывает переданную ей «функцию» с нужными аргументами (элемент, его «координаты» и что ты там еще хочешь). «Функция» разумеется передается через шаблонный тип и может быть как функцией, так и объектом с оператором круглые скобки, конечно лучше воспользоваться абстракцией bind, чтобы можно было передавать и метод некоторого объекта, например из буста. Вроде в самом с++ ввели что-то подобное.
UPD. С петоном скрестить наверное не сложно, нужно только пробросить интерфейс к for_each и колбэку.
Исходная версия staseg, :
Во-первых, я бы не стал засовывать алгоритм прохода контейнера внутрь, а прилепил функцию for_each сбоку. Под каждый контейнер она затачивается перегрузкой и/или специализацией.
Далее, for_each оптимально, в т.ч. в несколько потоков, проходит весь контейнер и вызывает переданную ей «функцию» с нужными аргументами (элемент, его «координаты» и что ты там еще хочешь). «Функция» разумеется передается через шаблонный тип и может быть как функцией, так и объектом с оператором круглые скобки, конечно лучше воспользоваться абстракцией bind, чтобы можно было передавать и метод некоторого объекта, например из буста. Вроде в самом с++ ввели что-то подобное.