如何按第一个元素但降序对 <int, pair <int, int> > 对数组进行排序?

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)

它不让我。

还有其他方法可以按降序排序吗?

cig*_*ien 6

你可以写:

std::sort(std::begin(adj), std::end(adj), 
          std::greater<std::pair<int, std::pair<int, int>>>{});
Run Code Online (Sandbox Code Playgroud)

,您可以将其简化为:

std::sort(std::begin(adj), std::end(adj), std::greater<>{});
Run Code Online (Sandbox Code Playgroud)

,你可以再简单一点:

std::sort(std::begin(adj), std::end(adj), std::greater{});
Run Code Online (Sandbox Code Playgroud)

,您可以进一步简化:

std::ranges::sort(adj, std::greater{});
Run Code Online (Sandbox Code Playgroud)