所以我有一个向量说:
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)]
我已经读到,如果向量包含一对,我们可以使用第一个或第二个值进行排序,但是如果向量包含嵌套对,那么如何进行处理。...
编辑: 试图实现它,如下所示: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],
答案 0 :(得分:2)
您可以使用标头element.find($(":radio[name=public][value='F']")).prop("checked", true)
Query.fn.init [input.abs7, selector: "#scheduleRegistrationLayer form[name="scheduleform"] [object Object]", prevObject: jQuery.fn.init(1), context: document]
中声明的标准函数std::tie
。
您在这里。
<tuple>
程序输出为
#include <iostream>
#include <utility>
#include <tuple>
#include <vector>
#include <iterator>
#include <algorithm>
int main()
{
std::vector<std::pair<std::pair<int,int>, std::pair<int,int>>> v =
{
{ { 11, 13 }, { 2, 1 } }, { { 5, 6 }, { 1, 2 } }, { { 9, 10 }, { 1, 3 } } ,
{ { 5, 8 }, { 3, 4 } }, { { 12, 14 }, { 2, 7 } }
};
for ( const auto &p : v )
{
std::cout << "{ ";
std::cout << "{ " << p.first.first << ", " << p.first.second << " }, ";
std::cout << "{ " << p.second.first << ", " << p.second.second << " } ";
std::cout << "}, ";
}
std::cout << '\n';
std::sort( std::begin( v ), std::end( v ),
[]( const auto &p1, const auto &p2 )
{
return std::tie( p1.second.first, p1.first.second ) <
std::tie( p2.second.first, p2.first.second );
} );
for ( const auto &p : v )
{
std::cout << "{ ";
std::cout << "{ " << p.first.first << ", " << p.first.second << " }, ";
std::cout << "{ " << p.second.first << ", " << p.second.second << " } ";
std::cout << "}, ";
}
std::cout << '\n';
}
关于您显示的此代码段
{ { 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, 8 }, { 3, 4 } },
然后,每次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);
的调用都会对向量进行重新排序,从而破坏了先前调用设置的顺序。