私は
pair<int, pair<int, string> >.
これを C++ の STL セットに挿入します。最初の値でソートされたセットを保持します。しかし、最初の値が他の値と同じペアを挿入する場合、これを 2 番目の値が大きい順に並べ替える必要があります。わかりやすくするために例を挙げます。
#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) と等しいためです。ただし、2 番目の値 (3) は、"hi" の 2 番目の値 (1) よりも大きく、"hello" の 2 番目の値よりも大きくなっています。
ありがとうございました。
したがって、最初の値が同じである場合は、2 番目の値に従ってソートする必要がありますが、最初に 2 番目の値が大きくなります。