c ++ stl优先级队列构造函数

时间:2012-12-19 10:52:29

标签: c++ stl priority-queue

我编写了以下代码来接受许多输入,然后按特定顺序输出它们。

#DEFINE cases 100     

struct job
{
int w;
};

class compjob
{
public:
       bool operator()( job j1,job j2)
       {
       if(j2.w>j1.w)
       return true;

       return false;
       }
};

int main()
{
priority_queue< job, vector<job>, compjob > jobs;

int weight;



for(int i=1;i<=cases;i++)
{
cin>>weight;
job job1;
job1.w=weight;

jobs.push(job1);
} //for loop ends here


for(int i=1;i<=cases;i++)
{
job job1= jobs.pop(); ////////////ERROR!!!!!/////////
cout<<job1.w<<endl;
}

return 0;;
}

但是当我编译代码时,编译错误会显示在上面标记的行上:

Invalid conversion from 'void' to non scalar 'job'.

我认为我没有正确地声明作业priority_queue。另外,请解释声明中第二个参数的重要性(即矢量,我真的不知道它的用途)

2 个答案:

答案 0 :(得分:7)

pop不返回任何内容,首先使用top获取元素,然后弹出它。

答案 1 :(得分:1)

每次您使用图书馆时,我都会建议您查看帮助页C++ reference: priority_queue

有些人可能会说cplusplus包含一些错误,因此您可以尝试使用this作为替代方案。