【问题标题】:Sorting an array of pointers to an object alphabetically by their member variables [duplicate]按成员变量的字母顺序对指向对象的指针数组进行排序[重复]
【发布时间】:2017-01-30 19:49:44
【问题描述】:

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

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

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

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

比较字符串与比较字符串的关系

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

不过,我想不出用这些信息解决我的问题的方法。

我的目标是正确的还是有更好的方法?

【问题讨论】:

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


【解决方案1】:

您的运算符定义正确,但不是您要查找的运算符。您要定义运算符

【讨论】:

  • 所以我会使用 bool Person::operator
  • @luke_k bool Person::operator <(const Person& p) const { return name < p.name; }
猜你喜欢
  • 2013-11-02
  • 2014-03-11
  • 2019-04-21
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多