哪种算法需要“访问者”(boost 库中的术语)?
Posted
技术标签:
【中文标题】哪种算法需要“访问者”(boost 库中的术语)?【英文标题】:Which algorithm needs "visitor" (term in boost library)? 【发布时间】:2018-12-25 06:20:11 【问题描述】:我正在学习 C++ 中的 boost 库。当我进入 bfs 部分时,指南告诉我可以输入一个访问者类(可选),它具有 vis.initialize_vertex(v, g)
或 vis.examine_vertex(u, g)
之类的功能。
我认为访问者只能用于您有时希望从中获得一些信息的算法,这并不常见。而且我只在 dfs 和 bfs 中看到过访问者(在 boost 中)。所以想问问还有没有其他算法需要访问者?
我的意思是“访问者”是当你应用一个算法时,你可能需要一些额外的信息或做一些额外的事情(例如在 bfs 期间打印所有元素),而不是变体中的 apply_visitor。我想问的是,是否还有其他算法需要我们做这些额外的事情?
【问题讨论】:
参见 boost::variant。您可以通过 boost::apply_visitor() 访问来使用其中的值 我已经改变了问题。我认为variant中的访问者和bfs中的访问者不是一回事。 【参考方案1】:访客主要有2种,
主要是在“迭代器”上应用函数的一种:
树遍历(前/后顺序遍历,...)。 图遍历(dfs, bfs, ...)另一个用于调度一个元素:
std::variant
双重调度
“替换”虚拟方法(访问者模式)。
【讨论】:
以上是关于哪种算法需要“访问者”(boost 库中的术语)?的主要内容,如果未能解决你的问题,请参考以下文章