【发布时间】:2019-04-12 14:31:42
【问题描述】:
这是我第一次使用 C++ STL priority_queue(),我对遇到的这段特定代码有点困惑(但我相信这与 pq 无关,它应该适用于所有容器(向量、集合等)):
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::tuple<int, int, int>代替pair<int, pair<int, int>>吗? -
@Jarod42 :是的,这在大多数情况下可以达到目的,但这只是为了澄清概念,我确实发现有人以这种方式实现它。 (为了建议有人避免使用三元运算符,我必须首先了解什么是三元运算符?:) 因此,我发布了此内容以进行澄清。希望它也能帮助未来的访客)