我有一个包含4列数据的C ++列表对象,其中每列用空格分隔。它们分别是string,integer,integer和double类型。如何按第一列排序列表,然后按第四列排序?
答案 0 :(得分:4)
使用谓词函数解析数据,并通过比较对象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);
关于您解析的第一,第二,第三和第四成员(可能使用stringstream)并将其存储在数据成员中,因为每次在辅助函数中进行解析可能会很昂贵。
答案 1 :(得分:1)
制作数据结构,然后根据Mohits的答案进行排序。 它可能看起来像
struct s_data{
string str;
int a;
int b;
double c;
};
现在您可以使用仿函数进行排序。
输入使用字符串流(将使生活更轻松)。