Про визитор
От: jfk100  
Дата: 23.03.16 02:53
Оценка: 1 (1)
Привет

В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."

Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...
Re: Про визитор
От: neFormal Россия  
Дата: 23.03.16 05:24
Оценка:
Здравствуйте, jfk100, Вы писали:

J>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...


например, дерево. при обходе дерева, например, используют визитор.
...coding for chaos...
Re: Про визитор
От: GarryIV  
Дата: 23.03.16 05:55
Оценка:
Здравствуйте, jfk100, Вы писали:

J>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."


J>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...


Сам визитор не обходит конечно ничего, он вызывается в процессе обхода для каждого из элементов контейнера. Визитор, например, может считать количество элементов в контейнере и все такое прочее. Тип контейнера вообще не имеет значения.
WBR, Igor Evgrafov
Re[2]: Про визитор
От: jfk100  
Дата: 23.03.16 07:11
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Здравствуйте, jfk100, Вы писали:


J>>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."


J>>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...


GIV>Сам визитор не обходит конечно ничего, он вызывается в процессе обхода для каждого из элементов контейнера. Визитор, например, может считать количество элементов в контейнере и все такое прочее. Тип контейнера вообще не имеет значения.


Т.е. имеется ввиду, что экземпляр визитора может сохранить некий результат предыдущего вызова и использовать этот результат при следующем вызове?
Я не понимаю, почему это должны быть именно элементы какого-то контейнера.
Re[3]: Про визитор
От: GarryIV  
Дата: 23.03.16 16:46
Оценка:
Здравствуйте, jfk100, Вы писали:

J>>>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...


GIV>>Сам визитор не обходит конечно ничего, он вызывается в процессе обхода для каждого из элементов контейнера. Визитор, например, может считать количество элементов в контейнере и все такое прочее. Тип контейнера вообще не имеет значения.


J>Т.е. имеется ввиду, что экземпляр визитора может сохранить некий результат предыдущего вызова и использовать этот результат при следующем вызове?

Да.

J>Я не понимаю, почему это должны быть именно элементы какого-то контейнера.

В оригинале это elements of an object structure.
WBR, Igor Evgrafov
Re: Про визитор
От: Mr.Delphist  
Дата: 24.03.16 17:15
Оценка:
Здравствуйте, jfk100, Вы писали:

J>Привет


J>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."


J>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...


Обычный подход stateful/stateless. Надо — даём визитору внутреннее состояние. Не надо — делаем stateless. Те же STL-алгоритмы возьмите — часть с состоянием (типа std::accumulate), часть без состояния (типа std::find_if)
Re: Про визитор
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 02.04.16 18:20
Оценка:
Здравствуйте, jfk100, Вы писали:

J>В вики есть фраза "класс Visitor может запоминать в себе какое-то состояние по ходу обхода контейнера."


J>Какой контейнер имеется ввиду? Визитор же ничего не "обходит"...


Да, визитор он не про обход. Он про операции над некоторой структурой данных. Будет ли обход встроен в визитор или нет — дело десятое.
https://en.wikipedia.org/wiki/Multiple_dispatch
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.