按多列对C++列表进行排序

Sorting a C++ list by multiple columns

本文关键字:排序 列表 C++      更新时间:2023-10-16

>我有一个包含 4 列数据的 C++ 列表对象,其中每列由空格分隔。它们分别是字符串、整数、整数和双精度类型。如何按第一列和第四列对列表进行排序?

使用谓

词函数,该函数通过比较对象 1 和对象 2 来解析数据并返回小于的结果。

struct sorter1432
{
   bool operator()(const Data &a, const Data &b)
   {
      if(a.first != b.first) return a.first < b.first  // string comparision
      if(a.fourth != b.fourth) return a.fourth < b.fourth  // double comparision
      if(a.third != b.third) return a.third < b.third  // int comparision
      if(a.second != b.second) return a.second < b.second  // int comparision
      return false;  // Equal
   }
};
...
lst.sort(sorter1432);

关于您解析(可能使用字符串流)并将其存储在数据成员中的第一、第二、第三和第四个成员,因为每次在帮助程序函数中进行解析可能会很昂贵。

制作数据结构,然后根据Mohits的答案进行排序。它可能看起来像

struct s_data{
string str;
int a;
int b;
double c;
};

现在,您可以使用函子进行排序。

输入使用字符串流(将使生活更轻松)。