Dar*_*ing 2 c++ arrays sorting std-pair
我想pair <int, pair <int, int> >按第一个值按降序对包含 的数组进行排序。
我有
pair <int, pair<int, int> > adj[10];
Run Code Online (Sandbox Code Playgroud)
其中有值,未排序。
当我使用
sort(adj, adj + 10);
Run Code Online (Sandbox Code Playgroud)
它将根据adj[i].first值按升序对数组进行排序。
但是,当我尝试按降序排序时
sort(adj, adj + 10, greater<int>());
Run Code Online (Sandbox Code Playgroud)
它不让我。
还有其他方法可以按降序排序吗?
你可以写:
std::sort(std::begin(adj), std::end(adj),
std::greater<std::pair<int, std::pair<int, int>>>{});
Run Code Online (Sandbox Code Playgroud)
在c++14 中,您可以将其简化为:
std::sort(std::begin(adj), std::end(adj), std::greater<>{});
Run Code Online (Sandbox Code Playgroud)
在c++17 中,你可以再简单一点:
std::sort(std::begin(adj), std::end(adj), std::greater{});
Run Code Online (Sandbox Code Playgroud)
在c++20 中,您可以进一步简化:
std::ranges::sort(adj, std::greater{});
Run Code Online (Sandbox Code Playgroud)