我编写了以下代码来接受许多输入,然后按特定顺序输出它们。
#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。另外,请解释声明中第二个参数的重要性(即矢量,我真的不知道它的用途)
答案 0 :(得分:7)
答案 1 :(得分:1)
每次您使用图书馆时,我都会建议您查看帮助页C++ reference: priority_queue。
有些人可能会说cplusplus包含一些错误,因此您可以尝试使用this作为替代方案。