【问题标题】:Traverse function with generic function as parameter以泛型函数为参数的遍历函数
【发布时间】:2019-04-30 03:51:42
【问题描述】:

我正在尝试实现二叉搜索树。

我发现自己需要遍历树有几个不同的原因:

(1) 检查BST是否有特定元素

(2) 填充 BST 中保存的值的数组

(3) 检查两个 BST 是否相等

有没有办法编写一个遍历函数,将泛型函数(未指定其参数)作为参数,以便在遍历 BST 时调用该函数?

(例如,检查当前节点的值是否等于给定值的函数)。

谢谢你:)

【问题讨论】:

  • 为什么不使用std::functionstd::function 让您可以将任何可调用对象(函子、lambda、函数指针)粘贴到一个方便的对象中,该对象可以像任何其他对象一样传递
  • 1.) alter igel 提供了一个链接(其中也有示例)。 2.) 搜索std::function 应该提供大量示例。然而,我曾经用一个稍微不同的解决方案写了一个对SO: Preorder traversal through Morse code BST 的答案:一个Apply 类,它有3 种不同的访问方法,这些方法可以派生用于多种用途。
  • std::bind with auto 怎么样:onlinegdb.com/ByWdwPBi4

标签: c++ arrays dictionary


【解决方案1】:

您可以借助函数指针。将函数的地址作为参数传递给您的遍历函数:

void func_to_call()
{
...
}

// Call to traverse with function pointer as one of the arguments
traverse(&func_to_call, <other parameters required by traverse>);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 2016-07-17
    • 2011-10-09
    • 1970-01-01
    • 2018-05-21
    • 2022-01-04
    • 2018-08-05
    相关资源
    最近更新 更多