我想知道如何在一对结构中对值进行排序。任何指针都非常感谢。
下面粘贴了最小的工作示例。
#include <iostream>
using namespace std;
int main ()
{
pair <int, int> myPair;
myPair = make_pair(5, 3);
cout << myPair.first << " " << myPair.second << endl;
return 0;
}
答案 0 :(得分:2)
std::pair<U,V>
本身并未提供任何订购功能。如果您不想自己编写任何其他代码(例如条件std::swap
),那么您最接近的就是使用std::minmax
代替std::make_pair
:
#include <algorithm>
std::pair<int, int> myPair = std::minmax(5, 3);
默认情况下,std::minmax
将使用小于运算符(<
)来确定元素的顺序。它可以任意定制:
std::pair<int, int> a = std::minmax(5, 3, [](auto x, auto y){ return x*10 < y+20; });
std::pair<std::string, std::string> b = std::minmax("foo"s, "bar"s, std::greater<>{});