2

我有一个包含如下值的文本文件:

30 Text
21 Text
12 Text 
1  Text
3  Text

我想将其读入二维数组以将数字和文本标识符保持在一起。完成此操作后,我想将其按升序排序,因为文本文件将未排序。

在 C++ 中解决这个问题的最佳方法是什么,我应该把它放在一个数组中吗?我的目标是从文本文件中获取前 3 个最高值。是否有更适合此操作的数据结构或更好的解决方法?无论如何,我都可以构建文本文件,如果应该更改它,它不是一个具体的格式。

TIA

4

2 回答 2

3

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

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

于 2012-04-30T12:22:07.163 回答
2

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

于 2012-04-30T12:29:25.253 回答