我想对一类“歌曲”数据类型进行排序
class song{
std::string artist;
std::string title;
std::string size;
public:
};
我知道可以使用 bool 运算符重载 > 但如果我希望它按艺术家排序,然后按标题,然后按大小排序,有什么方法可以指定比较顺序吗?
最佳答案
当您创建 operator<
时您指定希望在比较中使用的属性顺序。
使用 boost::tie
创建这样的运算符实际上几乎是微不足道的(或 std::tie
如果您能够使用 C++11):
bool operator<(const song& left, const song& right)
{
return boost::tie(left.artist, left.title, left.size) < boost::tie(right.artist, right.title, right.size);
}
关于c++ - 排序具有多个成员的结构 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108617/