gpt4 book ai didi

c++ - 对内部包含 2 对的 vector 进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 02:02:39 26 4
gpt4 key购买 nike

嗯,我有一个 vector ,对>,我想知道他是如何排序的?用排序(v.begin(),v.end());

using namespace std;

int main(){
int n; cin >> n;
vector<pair<pair<int,int>, pair<int,int>>> v;
for(int i=0;i<n;i++){
long long x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
v.push_back(make_pair(make_pair(x1,y1),make_pair(x2,y2)));
}
sort(v.begin(),v.end());
for(auto& p : v){
cout<<p.first.first<<" "<<p.first.second<<" "<<p.second.first<<" "<<p.second.second<<"\n";
}
return 0;
}

输入:

4   
5 19 8 17
5 15 15 5
0 20 20 0
8 10 10 8

输出:

0 20 20 0
5 15 15 5
5 19 8 17
8 10 10 8

最佳答案

对于类(class)std::pair有定义的运算符

template<class T1, class T2>
constexpr bool operator< (const pair<T1, T2>&, const pair<T1, T2>&);

按以下方式操作

Returns: x.first < y.first || (!(y.first < x.first) && x.second < y.second).

例如,对于类型为 std::pair<std::pair<int, int>, std::pair<int, int>> 的两对

{ { 5, 19 }, { 8, 17 } }
^^^^^^^^^

{ { 5, 15 }, { 15, 5 } }
^^^^^^^^^

首先是对{ 5, 19 }{ 5, 15 }使用相同的 operator < 进行比较.

由于第二对小于第一对,因此第二对将在结果 vector 中的第一对之前。

例如,如果他们(第一对)彼此相等

{ { 5, 15 }, { 8, 17 } }
^^^^^^^^^

{ { 5, 15 }, { 15, 5 } }
^^^^^^^^^

然后比较第二对。因为这对 { 8, 17 }小于 { 15, 5 }那么第一对小于第二对。

{ 8, 17 }{ 15, 5 }使用相同的模板进行比较 operator < .

关于c++ - 对内部包含 2 对的 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56973320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com