Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以泛型函数为参数的遍历函数_C++_Arrays_Dictionary - Fatal编程技术网

C++ 以泛型函数为参数的遍历函数

C++ 以泛型函数为参数的遍历函数,c++,arrays,dictionary,C++,Arrays,Dictionary,我正在尝试实现一个二进制搜索树 出于几个不同的原因,我发现自己需要遍历这棵树: (1) 检查BST是否具有特定元素 (2) 填充BST中保存的值数组的步骤 (3) 检查两个BST是否相等 有没有一种方法可以编写一个遍历函数,将泛型函数(其参数未指定)作为参数,以便在遍历BST时调用该函数 (例如,检查当前节点的值是否等于给定值的函数) 谢谢:)您可以借助函数指针。将函数的地址作为参数传递给遍历函数: void func_to_call() { ... } // Call to traverse

我正在尝试实现一个二进制搜索树

出于几个不同的原因,我发现自己需要遍历这棵树:

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

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

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

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

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


谢谢:)

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

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呢