C++ 以泛型函数为参数的遍历函数
我正在尝试实现一个二进制搜索树 出于几个不同的原因,我发现自己需要遍历这棵树: (1) 检查BST是否具有特定元素 (2) 填充BST中保存的值数组的步骤 (3) 检查两个BST是否相等 有没有一种方法可以编写一个遍历函数,将泛型函数(其参数未指定)作为参数,以便在遍历BST时调用该函数 (例如,检查当前节点的值是否等于给定值的函数)C++ 以泛型函数为参数的遍历函数,c++,arrays,dictionary,C++,Arrays,Dictionary,我正在尝试实现一个二进制搜索树 出于几个不同的原因,我发现自己需要遍历这棵树: (1) 检查BST是否具有特定元素 (2) 填充BST中保存的值数组的步骤 (3) 检查两个BST是否相等 有没有一种方法可以编写一个遍历函数,将泛型函数(其参数未指定)作为参数,以便在遍历BST时调用该函数 (例如,检查当前节点的值是否等于给定值的函数) 谢谢:)您可以借助函数指针。将函数的地址作为参数传递给遍历函数: void func_to_call() { ... } // Call to traverse
谢谢:)您可以借助函数指针。将函数的地址作为参数传递给遍历函数:
void func_to_call()
{
...
}
// Call to traverse with function pointer as one of the arguments
traverse(&func_to_call, <other parameters required by traverse>);
void func_to_call()
{
...
}
//调用以函数指针作为参数之一进行遍历
遍历(&func_to_调用,);
为什么不使用密码std::function
允许您将任何可调用对象(functor、lambda、函数指针)粘贴到一个方便的对象中,该对象可以像其他对象一样传递1。)alter igel提供了一个链接(也有示例)。2.)谷歌搜索std::function
应该提供大量的例子。然而,我曾经用一个稍有不同的解决方案写过一个答案:一个Apply
类,它有3种不同的访问方法,这些方法可以用于多种目的。那么std::bind with auto呢