c++ - 大条目的慢 std::map

标签 c++ performance hashmap

我们有 48,16,703 个这种格式的条目。

1 abc
2 def
...
...
4816702 blah
4816703 blah_blah

由于条目的数量很大,我担心 std::map 在插入期间会花费很多时间,因为它需要为每次插入做平衡。

仅将这些条目插入 map 会花费大量时间。我在做

map[first] = second;

两个问题: 1. 我在这种情况下使用 std::map 是否正确? 2.我按上面的方式插入是否正确。或者我应该使用 map.insert()

很抱歉没有做实验并写下绝对数字,但我们希望就我们做的事情是否正确达成普遍共识。

此外,它们的键并不总是连续的..

附言当然,稍后我们还需要访问该映射以获取与键对应的值。

最佳答案

如果你之后不需要插入到 map 中,你可以构造一个未排序的数据 vector ,根据键对其进行排序,然后使用 std::equal_range 等函数进行搜索.
它的复杂度与 std::map 相同,但分配量要少得多。

关于c++ - 大条目的慢 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53705538/

相关文章:

用户 friend 的 Php 爆炸或唯一 Mysql 表?

java - 多次查询一个巨大的集合。有没有更高效的解决方案?

c++ - 将 STL map 打印为表格

java - 比较 Java 中的 HashMap

C++:如何将参数传递给自定义异常?

C++,没有STL和Boost的对象数组(来自不同的类)

c++ - 在 C++ 流媒体服务器中使用 ffmpeg 转换视频

c++ - QCompleter 用于 QTableWidgetItem 自动完成

java - 在Java中将大写字母转换为小写字母并将小写字母转换为大写字母的最快方法

java - 使用 HashMap 对 JTree 节点进行分组