有没有一种方法在C++中,能够根据一对值的差异来排序向量对。例如,假设我有4个向量对:
1 3,
5 6,
2 3,
12 5,
所以,这些数对的差分别为2、1、1、7,如果我按降序排列,则排序后的向量将是:
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;
}
compare
变量传递给sort()
方法。请参考 @scohe001 在评论中提供的链接。 - Error - Syntactical Remorsestd::sort
(并使用比较器变量,如CoryKramer的答案所示)。但是,除非您遇到一些非计算问题或某些非常低级别的操作系统/固件问题,否则通常会自动回答“是否有C++的方法”为“是”。 - Ped7g