Где хранить результаты вычислений для каждого элемента, который посещен в шаблоне Visitor? - PullRequest
1 голос
/ 15 января 2012

Я пытаюсь использовать посетителя (в смысле «отделения алгоритма от структуры данных»). Все примеры, которые я вижу, делают что-то вроде суммы - где посетитель - SumVisitor и хранит ivar «Sum», который просто добавляет значение каждого элемента, который он посещает. Однако что если вы хотите связать результат вычисления с каждым элементом? В качестве простого случая, скажем, вы хотите, чтобы алгоритм (посетитель) возводил в квадрат каждый элемент, который он посещает. Где вы храните результаты? Единственное, о чем я могу думать, это что-то вроде вектора, который хранится в посетителе, но это кажется странным. Любые предложения о том, как сделать что-то подобное?

1 Ответ

1 голос
/ 15 января 2012

У вас есть четыре варианта:

1) Хранить их как-то в исходной структуре данных, если есть куда их поместить.

2) Сохраните их в посетителе (например, используйте карту от элементов к результатам).

3) Храните их в другом месте и передавайте «в другом месте» посетителю, чтобы он знал, куда поместить результаты.

4) Создайте новую структуру данных, чтобы хранить их по мере продвижения.

То, что вы выберете, зависит от того, чего вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...