我在 C++ 中有一个这样定义的名称类:
class name{
public:
int range;
int num;
char type;
string n;
};
如何按字母顺序排列包含基于的名称的数组string n
?
我在 C++ 中有一个这样定义的名称类:
class name{
public:
int range;
int num;
char type;
string n;
};
如何按字母顺序排列包含基于的名称的数组string n
?
std::sort
可选地接受一个谓词,它可以是一个函数、lambda 或其他可调用的东西。在这里你可以只写一个简单的函数bool orderByName(name const& A, name const& B)
。
一种方法是重载operator<
以将其n
与另一个对象的(相同类型)进行比较n
。如果 aname
由其n
变量标识并n
定义其顺序,则这可能是一个合适的解决方案。
对于排序,算法库中有一些函数可以做到这一点。
重载看起来像这样:
bool operator<(const name &o) const {
return n < o.n;
}
定义其他五个比较运算符也是一个好主意。平等很容易,然后其余的可以定义<
为==
bool operator==(const name &o) const {
return n == o.n;
}