在哪里存储Visitor模式中访问的每个元素的计算结果
Where to store the result of the computation on each element visited in the Visitor pattern?
我正在尝试使用访问者(从"将算法与数据结构分离"的意义上)。我看到的所有例子都做了一个类似于sum的事情——访问者是SumVisitor,并存储一个ivar"sum",它只是添加它访问的每个元素的值。但是,如果要将计算结果与每个元素相关联,该怎么办?作为一个简单的例子,假设您希望算法(访问者)对其访问的每个元素进行平方。您将结果存储在哪里?我唯一能想到的是存储在访问者中的类似vector>的东西,但这似乎很奇怪。关于如何做这样的事情有什么建议吗?
您有四个选项:
1) 如果有地方放它们,就以某种方式将它们存储在原始数据结构中。
2) 将它们存储在访问者中(例如,使用从元素到结果的映射)。
3) 将它们存储在其他地方,并将"其他地方"传递给访问者,使其知道将结果放在哪里。
4) 创建一个新的数据结构,以便在执行过程中存储它们。
你选择哪一个取决于你想要实现的目标。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 当我的 if 条件计算结果为 false 时,我的 else 块将不会执行
- 为什么组合的上限和下限比较的计算结果总是为 true?
- 为什么'typeid(x) == typeid(y)'的计算结果为 true,其中 'x' 和 'y' 分别是 T 和 T& 类型的 id-表达式?
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- Fmod 函数清楚地输出一个预期的双精度值,但 if(fmod == 预期的双精度值)的计算结果不是 true
- WebGL2 和 C++ 上的浮点计算结果不同
- 术语的计算结果不是采用0个参数的函数
- 错误 C2064:术语的计算结果不是采用 3 个参数的函数
- 在C++中,是否可以编写一个条件的lambda,即只是一个计算结果为真或假的条件
- C++ 函数指针的计算结果为 1
- 为什么 02000 的计算结果为 1024
- 如何让编译器忽略这个计算结果为 false 的 if-constexpr?
- 为什么需要 FPU 重置以防止 NaN 结果传播到下一个计算结果?
- C++:术语的计算结果不是采用 1 个参数的函数
- 如果满足嵌套条件,则计算结果未显示结果C
- 为什么这个条件运算符的计算结果为 int?
- 在线程错误 C2064 中:term 的计算结果不为 0 个参数的函数
- 错误 C2064:term 的计算结果不是采用 1 个参数的函数 - 关于线程的一些东西
- 提升线程:术语的计算结果不为 0 个参数