gpt4 book ai didi

c++ - 基于对象中属性的最小对象堆

转载 作者:行者123 更新时间:2023-11-28 07:23:25 25 4
gpt4 key购买 nike

我是 C++ 的新手,我正在尝试使用 STL 优先级队列根据对象中的距离属性生成最小对象堆。我不完全确定我需要做什么,但我环顾四周,我发现我的优先队列看起来像这样:

std::priority_queue<Class, std::vector<Class>, object.distance> pq;

我不完全确定的是我如何着手重载比较运算符,首先将堆更改为最小堆,然后根据属性比较我的对象。任何帮助将不胜感激?

最佳答案

请注意,使用比较器的是堆操作,不是您的容器。
假设您的函数具有以下原型(prototype):static bool object::distance( Class, Class );
然后你可以使用 std::make_heap功能,像这样 std::make_heap( pq.begin(), pq.end(), object::distance )

可能值得注意的是,std::priority_queue 没有 begin 或 end 方法,并且不提供 STL 堆函数所需的 RandomAcessIterators。您试图从队列中创建一个堆这一事实表明您正在滥用容器。 priority_queue 已经有它自己的顺序。如果你想使用堆,你可以只使用 vector ,像这样:std::vector< Class > pq;

关于c++ - 基于对象中属性的最小对象堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19086498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com