c++ - 排序具有多个成员的结构 C++

标签 c++ class sorting structure

我想对一类“歌曲”数据类型进行排序

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/

相关文章:

c++ - 无法从 std::bind 推断出 std::function 的模板参数

c++ - 使用文件对话框选择包含特定文件类型的文件夹?

c++ - 在二进制文件中搜索 C++

sql - 微软 Access : How to sort text column by length of its text string?

c++ - 为什么需要在虚拟表中输入纯虚函数

c++ - 使用 C++ 扫描多核系统中的 CPU 缓存操作

java - Java 中具有子类和变量的高效类组织

python - python中获取类对象的生命周期

generics - 如何将 Dictionary<string, object> 的键转换为已排序的 string[]

algorithm - 关于从clrs书中计算算法的复杂性