通过成员变量按字母顺序对指向对象的数组进行排序

时间:2017-01-30 19:49:44

标签: c++ arrays sorting compare operator-overloading

我有一个包含成员变量name的Person对象数组。我试图使用重载的比较运算符按字母顺序排序,使用string :: compare来比较对象中的字符串。

bool Person::operator==(Person p) {
    if (name.compare(p.name) == 0) {
        return true;
    }
    else {
        return false;
    }
}

这可行并给我正确的结果,但我不知道如何使用它来按字母顺序排列数组中的名称。

我环顾四周,看到有关string :: compare的文档说

  

比较字符串与比较字符串

之间的关系      
      
  • 0他们比较相等
  •   
  • < 0>中不匹配的第一个字符的值较低。比较字符串或所有比较字符匹配但比较字符串>更短。
  •   
  • ,> 0比较字符串中不匹配的第一个字符的值大于>或者所有比较的字符匹配但比较的字符串更长。
  •   

我无法想办法用这些信息来解决我的问题。

我正在努力做正确的事情,还是有更好的方法?

1 个答案:

答案 0 :(得分:2)

您的操作员已正确定义,但它不是您正在寻找的操作员。您想要定义运算符<,然后使用std :: sort。