内置用于比较两个(或多个)值的方式



考虑为以下类实现operator<

struct foo {
int a, b;
};

可能最常见的方法是元素词典比较,如下所示:

bool operator<(foo lhs, foo rhs) {
return lhs.a < rhs.a || (lhs.a == rhs.a && lhs.b < rhs.b);
}

我已经写了足够多的次数,并且制作了一个类型足够多的次数,我想知道是否有内置的东西可以为我做这件事std::,希望有更少的样板和合理的代码生成。

现在,两个元素的上述内容还不错,但是随着您添加更多成员,术语会成倍增加。

您可以使用pair<int, int>而不是struct foo

由于pair<type,type>是内置的std::因此它具有所有内置数据类型的比较器。因此,您不需要任何额外的运算符重载或自定义比较器。即使它适用于字符串。std::根据货币对的第一个元素比较两个pair<type, type>。如果是平局,则根据第二个元素打破领带。

例如-

  • pair<int,int> a = make_pair(5,10) //declare using make_pair()
  • pair<int,int> b = {5,7} //different way of declaring pair.
  • pair<int,int> c = pair<int,int>(7,7) //declare using constructor

现在a < b == falseb < c == truea < c == true

所以通过这种方式,你可以使用pair<type, type>而不是 struct foo。您可以使用任何数据类型(如float, long long, char, string, pair, vector, set, map, complex等(替换"类型"。

相关内容

  • 没有找到相关文章

最新更新