c++ 求BST中属于某个对象的变量的平均值?

u7up0aaq  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(109)

我对cpp很陌生,目前正面临以下问题。
我有csv文件填充的人对象类,我需要插入到我的BST。

class Person{
        string name;
        string job;
        int age;
}

我已经成功地用这个Person对象填充了我的BST。现在我需要计算BST中所有Person的平均年龄(有一个合适的getter方法来计算年龄)。
下面是我的中序遍历(使用函数指针)
第一次
然而,我被困在,我不知道如何进行下一步遍历,并找到所有年龄的平均值。有人能指导我如何这样做吗?

chhqkbe1

chhqkbe11#

使BST访问器的第二个参数不是函数指针,而是模板化参数:

template <typename T, typename Callback>
void Bst<T>::InOrder(Node<T>* root, Callback&& callback) const {
  // ...
  callback(root->getData());
  // ...
}

template <typename T, typename Callback>
void Bst<T>::InOrderTraversal(Callback&& callback) const
{
    InOrder(this->root, std::move(callback));
}

这不仅允许你传递一个函数指针,而且允许你传递一个lambda函数:

int sum = 0;
int num = 0;
bst->InOrderTraversal([&](Person const& person) {
  sum += person.age;
  num += 1;
});
auto const average = static_cast<float>(sum) / num;

相关问题