我在C ++中有一个像这样定义的名称类:
class name{
public:
int range;
int num;
char type;
string n;
};
如何按字母顺序排列包含基于string n
?
答案 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)
。