Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个包含如下值的文本文件:
30 Text 21 Text 12 Text 1 Text 3 Text
我想将其读入二维数组以将数字和文本标识符保持在一起。完成此操作后,我想将其按升序排序,因为文本文件将未排序。
在 C++ 中解决这个问题的最佳方法是什么,我应该把它放在一个数组中吗?我的目标是从文本文件中获取前 3 个最高值。是否有更适合此操作的数据结构或更好的解决方法?无论如何,我都可以构建文本文件,如果应该更改它,它不是一个具体的格式。
TIA
如果只想要前三个值,最有效的方法可能是定义三个变量(或三元素数组),逐行读取文件,如果新读取的行属于前三个,则将它在那里。
但是如果你想使用容器,我会选择 a std::vectorand use std::sort,假设文件足够小,所有数据都适合内存。
std::vector
std::sort
我更愿意将它们放入 std::map (如果您有唯一的键。如果不使用 std::multipmap 。)因此,当您将数据插入地图时,它们将始终被排序。如果您想获得 3 个最高值,只需获取地图的前 3 个项目。