阅读后对文本文件进行排序?

时间:2012-04-30 12:16:47

标签: c++ sorting

我有一个文本文件,其中包含如下值:

30 Text
21 Text
12 Text 
1  Text
3  Text

我想把它读成2D数组,以保持数字和文本标识符在一起。一旦我完成了这个,我想按升序排序,因为文本文件将是未排序的。

在C ++中使用它的最佳方法是什么,我应该把它放在一个数组中吗?我的目标是从文本文件中获取前3个最高值。是否存在更适合这种情况的数据结构或更好的方法?无论如何我可以构造文本文件,如果应该更改它,它不是具体的格式。

TIA

2 个答案:

答案 0 :(得分:3)

如果您只想要前三个值,最有效的方法可能是定义三个变量(或三元素数组),逐行读取文件,如果新读取的行属于顶部三,把它放在那里。

但是如果你想使用容器,我会选择std::vector并使用std::sort,假设文件足够小,所有数据都适合内存。

答案 1 :(得分:2)

我更愿意将它们放入std :: map中(如果你有唯一的键。如果不使用std :: multipmap。)因此,当你将数据插入地图时,它们将始终被排序。如果你想获得3个最高值,只需获得地图的前3项。