gpt4 book ai didi

c++ - 根据对元素的差异对 vector 对进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:27 24 4
gpt4 key购买 nike

在 C++ 中有什么方法可以根据对值的差异对 vector 对进行排序。例如,假设我有 4 对

1 3, 
5 6,
2 3,
12 5,

因此,对的差异是 2 1 1 7,如果我按降序排序排序的 vector 将是,

12 5,
1 3,
5 6,
2 3,

我希望你明白我的问题是什么。有什么办法可以这样对元素进行排序吗?

我试过这种方式来根据第一个或第二个元素对元素进行排序。但这不是我的问题。我的问题是我需要根据差异进行排序。

bool sortinrev(const pair<int,int> &a, const pair<int,int> &b){
return(a.first > b.first) ;
}


int main()
{
vector< pair <int,int> > pq;
for(int i=1; i<=4; i++){
int x,y;
cin >> x >> y;

pq.push_back(make_pair(x,y));
}

sort(pq.begin(), pq.end(), sortinrev);

for(int i=0; i<4; i++){
cout << pq[i].first << " " << pq[i].second << endl;
}


return 0;
}

最佳答案

如果你的容器是

std::vector<std::pair<int, int>> data;

你可以把它排序为

std::sort(std::begin(data),
std::end(data),
[](std::pair<int, int> const& lhs, std::pair<int, int> const& rhs)
{
return std::abs(lhs.first - lhs.second) < std::abs(rhs.first - rhs.second);
});

如果你想在升序和降序之间切换,只需切换 <>相应地。

关于c++ - 根据对元素的差异对 vector 对进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677860/

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