哪种算法需要"visitor"(提升库中的术语)?

Which algorithm needs "visitor" (term in boost library)?

本文关键字:术语 算法 visitor      更新时间:2023-10-16

我正在学习C++的提升库。当我进入bfs部分时,指南告诉我我可以输入一个访问者类(可选),它具有vis.initialize_vertex(v, g)vis.examine_vertex(u, g)等功能。

我认为访问者只能在算法中使用,您有时希望从中产生一些信息,这并不常见。而且我只在 dfs 和 bfs 中看到访客(在增强中)。所以我想问一下是否有其他算法需要访问者?

我的意思是"访问者"是当你应用算法时,你可能需要一些额外的信息或做一些额外的事情(比如在bfs期间打印所有元素),但不是变体中的apply_visitor。我想问的是,是否还有其他算法需要我们做这些额外的事情?

主要有两种访客,

主要是在"迭代器"上应用函数的那个:

  • 树遍历(前/后顺序遍历,...
  • 图形遍历(DFS,BFS,...)

另一个用于调度一个元素:

  • std::variant
  • 双重调度
  • 虚拟方法的"替换"(访客模式)。