Итак, у меня есть вектор:
vector<pair<pair<int,int>,pair<int,int>>>
имеет элементы как:
[(11,13),(2,1)], [(5,6),(1,2)] ,[(9,10),(1,3)] ,[(5,8),(3,4)] ,
[(12,14),(2,7)].
После сортировки (т. Е. Прежде всего по первому значению второй пары и вторично по второму значению первой пары ...
Поэтому после сортировки вывод должен выглядеть так:
[(5,6),(1,2)] ,[(9,10),(1,3)] ,[(11,13),(2,1)] ,[(12,14),(2,7)] ,
[(5,6),(3,4)]
Я читал, что мы можем отсортировать, используя первое или второе значение, если вектор содержит пару, но как поступить, если вектор содержит вложенные пары ....
Edit:
Пытался реализовать это, как показано здесь: https://www.geeksforgeeks.org/sorting-vector-of-pairs-in-c-set-1-sort-by-first-and-second/
вот код:
bool sortbysecfirst(const pair<pair<int,int>,pair<int,int>> &a,const pair<pair<int,int>,pair<int,int>> &b) {
return (a.second.first < b.second.first);
}
bool sortbyfirstsec(const pair<pair<int,int>,pair<int,int>> &a,const pair<pair<int,int>,pair<int,int>> &b) {
return (a.first.second < b.first.second);
}
sort(arr.begin(),arr.end(),sortbysecfirst);
sort(arr.begin(),arr.end(),sortbyfirstsec);
Теперь для следующих пар:
[(11,13)(2,1)],[(5,6)(1,2)],[(9,10)(1,3)],[(5,8)(3,4)],[(6,7)(1,5)],
[(10,15)(5,6)],[(12,14)(2,7)],[(1,2),(1,8)],
Ответ должен быть:
[1, 2, 1, 8], [5, 6, 1, 2], [6, 7, 1, 5], [9, 10, 1, 3], [11, 13, 2, 1], [12, 14, 2, 7],[5, 8, 3, 4], [10, 15, 5, 6],
Но я получаю это как ответ:
[1, 2, 1, 8], [5, 6, 1, 2], [6, 7, 1, 5], [5, 8, 3, 4], [9, 10, 1, 3], [11, 13, 2, 1], [12, 14, 2, 7], [10, 15, 5, 6],