我有一个包含以下结构的大文本文件:
001 002 3
001 003 4
002 001 3
002 005 2
...
第一列和第二列指定实体的ID,最后一列指定该对的频率。在上面的示例中,实体001
和002
的对出现了两次:
001 002 3
002 001 3
我的问题:删除重复行的最合适(也是最有效)的方法是什么?我应该使用什么编程结构?
答案 0 :(得分:3)
我想,unordered_map
将数字哈希到使顺序无关紧要的事情上。
当然,地图的价值是你的第三栏。
如果您需要保留原始订单(我认为您不会),那么使用常规地图并合并没有散列的ID仍然是一种选择。
答案 1 :(得分:3)
这就是我解决问题的方法:
001 002
和002 001
生成相同的字符串。std::set
或std::unordered_set
。如果insert
操作失败,则会有重复。您当然可以在处理之前进一步解析输入字符串并将其视为数字。但只有在有关如何使用数据的更多信息可用时才能做出这一决定。