gpt4 book ai didi

具有自定义比较功能的 C++ 优先级队列在 Push() 上的行为不正确

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:12:11 25 4
gpt4 key购买 nike

我定义了这样一个 C++ 优先级队列:

priority_queue<pair<int,int>, vector<pair<int,int>>, decltype(&mygreater)> frontier(&mygreater);

像这样使用自定义 mygreater function():

bool mygreater(pair<int,int> v1, pair<int,int> v2) {
return v1.first > v2.first;
}

但是,当我尝试将整数对的 vector 推送到优先级队列时,我不断收到大量错误,包括:

error: no matching function for call to ‘std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int> >, bool (*)(std::pair<int, int>, std::pair<int, int>)>::push(std::vector<std::pair<int, int> >&)’ frontier.push(temp);

可能有人知道是什么导致我尝试推送到优先级队列时出错?任何帮助是极大的赞赏。

最佳答案

此错误与您的自定义比较无关。如果你这样做,你会得到同样的错误:

std::priority_queue<int> q;
std::vector<int> v;
q.push(v);

std::priority_queue::push接受您存储的任何类型的单个对象,而不是它们的整个 vector 。您存储的类型是 pair<int,int> , 但你正试图插入 vector<pair<int,int>> .

关于具有自定义比较功能的 C++ 优先级队列在 Push() 上的行为不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47067039/

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