gpt4 book ai didi

c++ - 模板参数列表中参数 3 的类型/值不匹配

转载 作者:行者123 更新时间:2023-11-30 01:04:04 24 4
gpt4 key购买 nike

我几乎成功地实现了霍夫曼代码。我遇到错误,错误如下:

>>prog.cpp: In function 'int main()':
>>prog.cpp:49:57: error: type/value mismatch at argument 3 in template parameter list for 'template<class _Tp, class _Sequence, class _Compare> class std::priority_queue'

>>priority_queue<Node*,vector<Node*>,comparitor<Node*>> pq;
^
>>prog.cpp:49:57: note: expected a type, got 'comparitor' Node*>

我以前尝试过指针,这是我第一次遇到这样的错误。

谁能解释一下为什么会出现这样的错误?这是我的注释代码:

#include <iostream>
using namespace std;
#include<queue>
class Node{
public:
int freq;
};
template<typename T>
bool comparitor(T a, T b)
{
if(a->freq>b->freq)
{return true;
}
else{
return false;
} // this is for the min heap
}

int main() {
priority_queue<Node*,vector<Node*>,comparitor<Node*>> pq;// min heap please, comparitor is just for node and not a template, though I could have easily created that.
}

最佳答案

std::priority_queue,需要三个参数——全部都是类型。你传递的是一个函数。将 comparator 更改为具有 operator() 函数的类。

// There is no reason to make it a class template. This is specifically
// designed to work only with Node*
struct comparitor
{
bool operator()(const Node* a, const Node* b) const
{
return (a->freq > b->freq);
}
};

并将其用作:

priority_queue<Node*, vector<Node*>, comparitor> pq;

关于c++ - 模板参数列表中参数 3 的类型/值不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50734189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com