我想对包含 pair <int, pair <int, int> >
的数组进行排序, 按第一个值降序排列。
我有
pair <int, pair<int, int> > adj[10];
其中有值,未排序。
当我用
sort(adj, adj + 10);
它会根据 adj[i].first
对数组进行排序值,按升序排列。
但是,当我尝试按降序排序时
sort(adj, adj + 10, greater<int>());
它不允许我。
还有其他降序排列的方法吗?
最佳答案
你可以这样写:
std::sort(std::begin(adj), std::end(adj),
std::greater<std::pair<int, std::pair<int, int>>>{});
在c++14 ,您可以将其简化为:
std::sort(std::begin(adj), std::end(adj), std::greater<>{});
在c++17 ,你可以简单一点:
std::sort(std::begin(adj), std::end(adj), std::greater{});
在c++20 ,你可以进一步简化这个:
std::ranges::sort(adj, std::greater{});
关于c++ - 如何按第一个元素降序对<int,对<int,int>>对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63584383/