我正在为class分配任务,其中我们必须使用multiset创建一个优先级队列对象。我很清楚该怎么做,但我在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 queue“行得到关于”缺少类型说明符“和”‘;’之前的意外令牌“的错误消息。我可能不正确地格式化了这一行,或者我假设multiset只能用来存储一个变量,这是错误的吗?
任何帮助都是非常感谢的。:)非常感谢您的宝贵时间!
发布于 2015-05-02 08:26:59
如果您有可从优先级队列类访问的using namespace std;,则queue是一种类型。这么说吧
multiset<E> queue;是非法的。
不要在头文件中使用#using namespace语句,原因包括其他原因。将queue重命名为其他名称,例如myQ,但一定要从.h或其中包含的某个文件中删除#using namespace std。
https://stackoverflow.com/questions/29996933
复制相似问题