понимание этого синтаксиса для указателей на функции в обходах c ++ - PullRequest
0 голосов
/ 04 мая 2020

Я смотрю на различные реализации деревьев AVL, в частности, функцию для обхода дерева. Я сталкивался с различными методами для достижения этой цели, однако есть один, который я не понимаю.

template <class TYPE, class KTYPE>
void  AvlTree<TYPE, KTYPE> 
  ::  AVL_Traverse (void (*process)(TYPE dataProc))
{
//  Statements 
    _traversal (process, tree);
    return;
}   // end AVL_Traverse 

/*  ===================== _traversal ===================== 
    Traverse tree using inorder traversal. To process a
    node, we use the function passed when traversal is called.
       Pre   tree has been created (may be null) 
       Post  all nodes processed 
*/

template <class TYPE, class KTYPE>
void  AvlTree<TYPE, KTYPE> 
  ::  _traversal (void(*process)(TYPE dataproc),
                  NODE<TYPE> *root)
{
//  Statements 
    if (root)
       {
        _traversal  (process, root->left);
        process     (root->data);
        _traversal  (process, root->right);
       } //  if 
    return;
}   //  _traversal 

в частности, в приведенном выше коде кто-то может помочь мне понять, что это значит и что он делает

AVL_Traverse (void (*process)(TYPE dataProc))

Я не понимаю, что означает эта часть

AVL_Traverse (void (* process)

для чего используется процесс указателя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...