Привет
В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."
Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...
Здравствуйте, jfk100, Вы писали:
J>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."
J>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...
Сам визитор не обходит конечно ничего, он вызывается в процессе обхода для каждого из элементов контейнера. Визитор, например, может считать количество элементов в контейнере и все такое прочее. Тип контейнера вообще не имеет значения.
Здравствуйте, GarryIV, Вы писали:
GIV>Здравствуйте, jfk100, Вы писали:
J>>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."
J>>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...
GIV>Сам визитор не обходит конечно ничего, он вызывается в процессе обхода для каждого из элементов контейнера. Визитор, например, может считать количество элементов в контейнере и все такое прочее. Тип контейнера вообще не имеет значения.
Т.е. имеется ввиду, что экземпляр визитора может сохранить некий результат предыдущего вызова и использовать этот результат при следующем вызове?
Я не понимаю, почему это должны быть именно элементы какого-то контейнера.
Здравствуйте, jfk100, Вы писали:
J>Привет
J>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."
J>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...
Обычный подход stateful/stateless. Надо — даём визитору внутреннее состояние. Не надо — делаем stateless. Те же STL-алгоритмы возьмите — часть с состоянием (типа std::accumulate), часть без состояния (типа std::find_if)
Здравствуйте, jfk100, Вы писали:
J>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."
J>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...
Да, визитор он не про обход. Он про операции над некоторой структурой данных. Будет ли обход встроен в визитор или нет — дело десятое.
https://en.wikipedia.org/wiki/Multiple_dispatch