gpt4 book ai didi

c++ - 使用自定义类集时出错

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

当我尝试编译下面的代码时,我得到了

'const elem' is not derived from 'const std::__cxx11::sub_match<_BiIter>'

我不明白这是什么意思,我的代码有什么问题?

struct elem
{
int x,y,val;
elem(int x,int y,int val)
{
this->x = x;
this->y = y;
this->val = val;
}
bool operator<(const elem b)
{
return val > b.val;
}
};


int kthSmallest(int v[MAX][MAX], int n, int k)
{
set<pair<int,int>> m;
priority_queue<elem, vector<elem>> pq;
int temp = k;
pq.emplace(0,0,v[0][0]);
while(temp != 0)
{
temp--;
if(pq.top().x + 1 < n && m.find(make_pair(pq.top().x + 1, pq.top().y)) == m.end())
{
m.insert(make_pair(pq.top().x + 1, pq.top().y));
pq.emplace(pq.top().x + 1, pq.top().y, v[pq.top().x + 1][pq.top().y]);
}
if(pq.top().y + 1 < n && m.find(make_pair(pq.top().x + 1, pq.top().y)) == m.end())
{
m.insert(make_pair(pq.top().x, pq.top().y + 1));
pq.emplace(pq.top().x, pq.top().y + 1, v[pq.top().x][pq.top().y + 1]);
}
}
return pq.top().val;
}

最佳答案

std::priority_queue 的第三个模板参数是Compare - 默认情况下为二元运算符 std::less .它需要两个参数作为 const .你的第一个参数 operator< (默认情况下是您调用它的对象)不是 const因为该方法不是 const .这就是为什么您需要按照评论中指出的那样更改它:

bool operator<(const elem b) const
{
return val > b.val;
}

关于c++ - 使用自定义类集时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46794720/

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