gpt4 book ai didi

c++ - 如果第一个相同,则按第二个排序插入成对的 STL 集合

转载 作者:行者123 更新时间:2023-11-30 02:58:26 24 4
gpt4 key购买 nike

我有一个

pair<int, pair<int, string> >. 

现在,我将其插入 C++ 的 STL 集中。它使集合按第一个值排序。但是,如果我插入一对与其他值相同的第一个值,我希望根据第二个值根据较大的第一个值对其进行排序。我将举一个例子来说明。

#define pii pair<int, string>
#define pint pair< int , pii >
set< pint > S;
set< pint >::iterator it;
S.insert(make_pair(100, make_pair(1, "hi")));
S.insert(make_pair(50, make_pair(2, "hello")));
it = S.begin();
cout << it->second.second;

这里我得到的输出是

hello

但是,现在如果我这样做,

S.insert(make_pair(50, make_pair(3, "dude")));
it = S.begin();
cout << it->second.second

这里也是输出

hello

但我希望输出是

dude

因为它的第一个值(50)小于“hi”的第一个值(100)并且等于“hello”的第一个值(50)。但是,它的第二个值(3)大于“hi”的第二个值(1),也大于“hello”的第二个值。

谢谢。

因此,如果第一个值相同,则必须根据第二个值排序,但首先是较大的第二个值。

最佳答案

如您所见,set 的定义允许您指定比较操作

template < class Key, class Compare = less<Key>,
class Allocator = allocator<Key> > class set;

Compare 可以是一个具有进行比较的 operator() 的类。此运算符采用两个值,如果要将第一个放在集合中的第二个之前,则需要返回 true

关于c++ - 如果第一个相同,则按第二个排序插入成对的 STL 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668580/

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