LINUX.ORG.RU

История изменений

Исправление staseg, (текущая версия) :

Во-первых, я бы не стал засовывать алгоритм прохода контейнера внутрь, а прилепил функцию for_each сбоку. Под каждый контейнер она затачивается перегрузкой и/или специализацией.

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

UPD. С петоном скрестить наверное не сложно, нужно только пробросить интерфейс к for_each и колбэку.

Исходная версия staseg, :

Во-первых, я бы не стал засовывать алгоритм прохода контейнера внутрь, а прилепил функцию for_each сбоку. Под каждый контейнер она затачивается перегрузкой и/или специализацией.

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