Какой алгоритм нуждается в "посетителе" (термин в библиотеке повышения)? - PullRequest
0 голосов
/ 25 декабря 2018

Я изучаю библиотеку наддува в C ++.И когда я перехожу к части BFS, руководство говорит мне, что я могу ввести класс посетителя (необязательно), который имеет функции, такие как vis.initialize_vertex(v, g) или vis.examine_vertex(u, g).

Я думаю, что посетитель может использоваться тольков алгоритме, который вы иногда хотите получить некоторую информацию, которая получается из него, что является редкостью.И я видел только посетителей в dfs и bfs (в boost).Поэтому я хочу спросить, есть ли какие-либо другие алгоритмы, которые требуют посетителей?

Что я имел в виду "посетитель", когда вы применяете алгоритм, вам может понадобиться дополнительная информация или сделать некоторые дополнительные вещи (такие как печатьвсе элементы во время bfs), но не apply_visitor в варианте.Я хочу спросить, есть ли другие алгоритмы, которые нам нужны для этих дополнительных вещей?

1 Ответ

0 голосов
/ 25 декабря 2018

Существует в основном 2 вида посетителей,

, один из которых является главным образом применением функции на "итераторе":

  • обход дерева (обход до / после заказа, ...).
  • обход графика (dfs, bfs, ...)

Другой для диспетчеризации на одном элементе:

  • std::variant
  • двойная отправка
  • «замена» виртуальных методов (шаблон посетителя).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...