Этот код выполняет по-разному, если добавить условие:Вставка пара в станд :: установлен противоречива (не признает <pair> .second)
Первый случай:
#include<bits/stdc++.h>
using namespace std;
struct comp
{
bool operator()(pair<int,pair<int,int> > a, pair<int,pair<int,int> > b)
{
return a.first>b.first;
}
};
int main()
{
set<pair<int,pair<int,int>>,comp> s;
auto d = s.insert({4,{6,10}});
cout<<(d.first)->first<<" "<<(d.first)->second.first<<" "<<(d.first)->second.second<<endl;
d = s.insert({4,{0,4}});
cout<<(d.first)->first<<" "<<(d.first)->second.first<<" "<<(d.first)->second.second<<endl;
}
Выход :
4 6 10
4 6 10
Второй случай: (с Кондит иона на .second)
#include<bits/stdc++.h>
using namespace std;
struct comp
{
bool operator()(pair<int,pair<int,int> > a, pair<int,pair<int,int> > b)
{
if(a.first==b.first)
return a.second.first<b.second.first;
return a.first>b.first;
}
};
int main()
{
set<pair<int,pair<int,int>>,comp> s;
auto d = s.insert({4,{6,10}});
cout<<(d.first)->first<<" "<<(d.first)->second.first<<" "<<(d.first)->second.second<<endl;
d = s.insert({4,{0,4}});
cout<<(d.first)->first<<" "<<(d.first)->second.first<<" "<<(d.first)->second.second<<endl;
}
Выход:
4 6 10
4 0 4
Почему набор не добавить другую пару в первом случае? Я думал, что дополнительное условие только решает порядок и не проводит различия между элементами.
Потому что вы ошибались? – juanchopanza
@juanchopanza;) – goelakash
Пожалуйста, скажите: кто сказал вам включить этот заголовок? Мы должны обязательно предупредить людей о том, чтобы не советоваться с этим источником. –