gpt4 book ai didi

c++ - 为什么我不能在成对的优先级队列中简单地覆盖 < ?

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:23 26 4
gpt4 key购买 nike

我知道我可以做到 priority_queue < P, vector<P>, Compare > queue; , 其中Compare是一个仿函数。但由于默认比较器是 less<P> , 它与 < 相同,为什么当我执行以下操作时它不起作用:

typedef pair<int, int> P;

bool operator<(const P& a, const P& b){
return (a.second < b.second);
}

int main(int argc, char const *argv[]){
int vec[] = {3, 6, 7, 8, 1, 2}; // just for testing
priority_queue <P> queue;
for(int i = 0; i < 6; ++i){
queue.push(make_pair(i, vec[i]));
}
cout << queue.top().second << endl; // returns 2
return 0;
}

最佳答案

std::pair已经有一个 operator< declared inside namespace std .

因为这与 pair 在同一个命名空间中, std::less将首先找到那个,然后不再寻找。

关于c++ - 为什么我不能在成对的优先级队列中简单地覆盖 < ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41282964/

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