优先队列:C++ 模板项目类型的问题
Priority Queue: C++ Trouble With Templating Item Types
我正在使用模板制作优先级队列,但我对它们很陌生,它们给我带来了麻烦。优先级队列在没有模板的情况下工作,但我试图让它对队列中的任何项目都是通用的。提前谢谢你。
我收到两个错误,每个错误都有一个注释:
"candidate template ignored: couldn't infer template argument 'ItemType'"
代码如下:
int main()
{
int choice, item, priority;
PriorityQueue pq;
do
{
cout<<"1.Insert\n";
cout<<"2.Delete\n";
cout<<"3.Display\n";
cout<<"4.Quit\n";
cout<<"Enter your choice : ";
cin>>choice;
switch(choice)
{
case 1:
cout<<"Input the item value to be added in the queue : ";
cin>>item;
cout<<"Enter its priority : ";
cin>>priority;
pq.insert(item, priority);
break;
case 2:
pq.del();
break;
case 3:
pq.display();
break;
case 4:
break;
default :
cout<<"Wrong choice\n";
}
}
while(choice != 4);
return 0;
}
这是错误框:
PQ.cpp:99:16: 错误:没有匹配的成员函数来调用 'del'
pq.del();
~~~^~~
PQ.cpp:44:14: 注意:候选模板被忽略:无法推断模板参数 'ItemType'
void del()
^
PQ.cpp:102:16: 错误:没有匹配的成员函数来调用 'display'
pq.display();
~~~^~~~~~~
PQ.cpp:59:14: 注意:候选模板被忽略:无法推断模板参数 'ItemType'
void display()
^
像这样更改您的函数调用:
pq.del<int>();
pq.display<int>();
pq.insert<int>(item, priority);
我正在使用模板制作优先级队列,但我对它们很陌生,它们给我带来了麻烦。优先级队列在没有模板的情况下工作,但我试图让它对队列中的任何项目都是通用的。提前谢谢你。
我收到两个错误,每个错误都有一个注释: "candidate template ignored: couldn't infer template argument 'ItemType'"
代码如下:
int main()
{
int choice, item, priority;
PriorityQueue pq;
do
{
cout<<"1.Insert\n";
cout<<"2.Delete\n";
cout<<"3.Display\n";
cout<<"4.Quit\n";
cout<<"Enter your choice : ";
cin>>choice;
switch(choice)
{
case 1:
cout<<"Input the item value to be added in the queue : ";
cin>>item;
cout<<"Enter its priority : ";
cin>>priority;
pq.insert(item, priority);
break;
case 2:
pq.del();
break;
case 3:
pq.display();
break;
case 4:
break;
default :
cout<<"Wrong choice\n";
}
}
while(choice != 4);
return 0;
}
这是错误框:
PQ.cpp:99:16: 错误:没有匹配的成员函数来调用 'del'
pq.del();
~~~^~~
PQ.cpp:44:14: 注意:候选模板被忽略:无法推断模板参数 'ItemType'
void del()
^
PQ.cpp:102:16: 错误:没有匹配的成员函数来调用 'display'
pq.display();
~~~^~~~~~~
PQ.cpp:59:14: 注意:候选模板被忽略:无法推断模板参数 'ItemType'
void display()
^
像这样更改您的函数调用:
pq.del<int>();
pq.display<int>();
pq.insert<int>(item, priority);