通过多集创建优先级队列

Creating a Priority Queue via Multiset

本文关键字:优先级 队列 创建      更新时间:2023-10-16

我正在为类做一个作业,我们必须使用 multiset 创建一个优先级队列对象。 我几乎知道该怎么做,但我在多集的语法方面遇到了一些麻烦。 这是我对优先级队列的类定义:

template< typename E >
class MyPriorityQueue
{
public:
    MyPriorityQueue();
    ~MyPriorityQueue();
    MyPriorityQueue(const MyPriorityQueue &);
    MyPriorityQueue operator=(const MyPriorityQueue &);
    void put(E item);
    E get();
    bool empty();
    int size();
private:
    multiset<E> queue;
};

当我编译代码时,我在"多集队列"行收到有关"缺少类型说明符"和"在';"之前意外标记"的错误消息。 我可能不正确地格式化了该行,或者我假设 multiset 只能用于存储一个变量是不正确的?

任何帮助都非常感谢。 :) 非常感谢您的时间!

如果您有可从

优先级队列类访问的using namespace std;,则queue是一种类型。所以说

 multiset<E> queue;

是非法的。

出于此原因,头文件中没有#using namespace语句。将您的queue重命名为其他名称,例如myQ,但一定要从您的 .h 或其包含的文件之一中删除#using namespace std