我有一个
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”的第二个值。
谢谢你。
因此,如果第一个值相同,则它必须根据第二个值排序,但首先在较大的第二个值中排序。