根据C++中的列对 CSV 文件进行排序

sorting a csv file according to column in C++

本文关键字:文件 排序 CSV C++ 根据      更新时间:2023-10-16

我被分配了一个任务,根据用户的输入对csv文件进行排序

数据如下所示:

California,USA,65,76,65,67
Paris,France,78,65,97,87
Tokyo,Japan,56,78,67,87
New York,USA,54,65,67,44,67

或者基本上列代表

City,Country,q1 average temperature, q2 average temperature, q3 , q4

我的任务是根据列对其进行排序:城市作为列 1,国家列为第 2 列,依此类推......取决于用户输入。

因此,如果用户输入1dec则意味着它将按第一列排序(在本例中按字母顺序)并打印排序后的数据

对于上面的示例,它将打印为:

Tokyo,Japan,56,78,67,87
Paris,France,78,65,97,87
New York,USA,65,67,67,44,67
California,USA,65,76,65,67

用户还可以输入多个输入,例如2asc,3dec,4dec这意味着,第 2 列将是第一个按升序排序的列,如果它们在该列中有类似的数据,则将使用第 3 列按降序显示它们,那么如果它仍然相同,则使用第 4 列。

对于上面的示例,如果使用2asc,3dec,4dec调用,它将打印为:

Paris,France,78,65,97,87
Tokyo,Japan,56,78,67,87
California,USA,65,76,65,67
New York,USA,65,67,67,44,67

我的问题是,我应该如何处理这个问题?我应该使用哪种最佳数据结构?

附言。并不是真的要求代码示例,但我只是要求一些提示或者如果你会遇到这种问题的方法

这是一个你可以使用的方法,希望你觉得它很直观

  1. 读取数据并将其放入包含表示真实世界数据的对象(类)的未排序向量中。
  2. 解析用户输入以决定列和排序顺序
  3. 使用简单的排序算法(如选择排序)将数据添加到排序向量。
  4. 遍历排序后的向量并输出结果。

我的问题是,我应该如何处理这个问题?什么是最好的 我应该使用数据结构吗?

您应该使用几种数据结构,但是如果您使用向量来存储输入列表(如果它很大),则最好使用保留方法,以避免多次重新分配向量。

另一个有趣的点是以相反的顺序重复应用排序条件,以便您可以轻松地按照多个条件对输出进行排序。

如果你对性能有价值,你应该使用更复杂的方法。