如何按字母顺序排列对象数组,其中字符串是对象中的字段

时间:2013-10-30 01:17:06

标签: c++ arrays alphabetical

我在C ++中有一个像这样定义的名称类:

class name{
public:
  int range;
  int num;
  char type;
  string n;
};

如何按字母顺序排列包含基于string n

的名称的数组

2 个答案:

答案 0 :(得分:0)

一种方法是重载operator<以将其n与另一个对象(同一类型)n进行比较。如果name变量标识了n,并且n定义了它的排序,那么这可能是一个合适的解决方案。

对于排序,算法库中有一些函数可以执行此操作。

重载看起来像这样:

bool operator<(const name &o) const {
  return n < o.n;
}

定义其他五个比较运算符也是一个好主意。平等很容易,其余的可以用<==来定义

bool operator==(const name &o) const {
  return n == o.n;
}

答案 1 :(得分:0)

std::sort可选地接受谓词,谓词可以是函数,lambda或其他可调用的东西。在这里,您只需编写一个简单的函数bool orderByName(name const& A, name const& B)