bool third_parameter(const pair<long long,long long> &a,
const pair<long long,long long> &b)
{
return a.second>b.second;
}
int main (){
sort(vec.begin(), vec.end(), third_parameter );
return 0;
}
我在这里使用了这种排序技术,但是当涉及到 vector 的相同元素时,这并不能保证我有任何事情。我正在使用一个 vector 对,它在 .first 中有一个递增的数字,在 .second 中有一个 int。当它找到两个相等的 .second 元素时,我希望按 .first 的升序对它们进行排序。
最佳答案
std::tie
仍然可以在这种情况下使用,只需注意正确排序变量即可。
bool custom_compare(const pair<long long, long long> &a,
const pair<long long, long long> &b)
{
return std::tie(b.second, a.first) < std::tie(a.second, b.first);
}
std::sort(vec.begin(), vec.end(), custom_compare);
我们使用积分的另一个选项是“x 的降序”是“-x 的升序”:
所以
bool custom_compare(const pair<long long, long long> &a,
const pair<long long, long long> &b)
{
return std::make_tuple(-a.second, a.first) < std::make_tuple(-b.second, b.first);
}
关于c++ - 对 vector 的相同元素进行升序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444536/