gpt4 book ai didi

c++ - 对 STL 容器进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 01:26:13 25 4
gpt4 key购买 nike

这是我第一次使用 C++ STL priority_queue() 我对我遇到的这段特定代码有点困惑(但我相信这与 pq 无关,而且它应适用于所有容器( vector 、集合等):

priority_queue<pair<int, pair<int, int> >,
vector<pair<int, pair<int, int> > >,
greater<pair<int, pair<int, int> > > > pq;

假设我有 pq.push_back(make_pair(a,make_pair(b,c)))。如果a有冲突,那么比较规则会扩展到第二对,排序会在b的基础上进行,然后是c?

最佳答案

问题基本上可以归结为:std::pair 是如何排序的,即 a > b 对两对的结果是什么(注意 >std::greater 只是调用 operator>)。

来自 cppreferencestd::pair::operator> 上:

Compares lhs and rhs lexicographically, that is, compares the first elements and only if they are equivalent, compares the second elements.

这自然会扩展到嵌套对。因此...

Lets say I have pq.push_back(make_pair(a,make_pair(b,c))). In case there is clash of a, then will the comparison rule extend to the second pair and sorting will be done on the basis of b and then c?

是的。如果两个元素的 a 相等,则将比较最外对的 second(即 (b,c))。

关于c++ - 对 STL 容器进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55653954/

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