我有一个文本文件,其中包含如下值:
30 Text
21 Text
12 Text
1 Text
3 Text
我想把它读成2D数组,以保持数字和文本标识符在一起。一旦我完成了这个,我想按升序排序,因为文本文件将是未排序的。
在C ++中使用它的最佳方法是什么,我应该把它放在一个数组中吗?我的目标是从文本文件中获取前3个最高值。是否存在更适合这种情况的数据结构或更好的方法?无论如何我可以构造文本文件,如果应该更改它,它不是具体的格式。
TIA
答案 0 :(得分:3)
如果您只想要前三个值,最有效的方法可能是定义三个变量(或三元素数组),逐行读取文件,如果新读取的行属于顶部三,把它放在那里。
但是如果你想使用容器,我会选择std::vector
并使用std::sort
,假设文件足够小,所有数据都适合内存。
答案 1 :(得分:2)
我更愿意将它们放入std :: map中(如果你有唯一的键。如果不使用std :: multipmap。)因此,当你将数据插入地图时,它们将始终被排序。如果你想获得3个最高值,只需获得地图的前3项。