【发布时间】:2017-03-02 03:31:07
【问题描述】:
如何将不同的 std::unordered_map 合并为一个?鉴于所有键都是唯一的?
例如:
std::unordered_map<uint64_t, uint64_t> h1, h2, h3, h4;
h1.insert({5, 1});
h1.insert({120, 2});
h2.insert({7, 4});
h4.insert({199,1})
std::unordered_map<uint64_t, uint64_t> h5;
是否可以在 O(1) 操作中将 h1、h2、h3、h4 中的所有 KeyValue 对推送到 unordered_map h5 中,或者无需再次对所有键进行哈希处理。
它不必只是 std::unordered_map。 C ++ 14中哈希表的任何化身都可以。这提供了 O(1) 插入和查询。
【问题讨论】:
-
方法如下:打开文本编辑器;编写几行 C++ 来执行此操作,编译、执行、验证结果、修复任何错误、重复直到代码正常工作。你已经完成了。
-
如果
merge是您所追求的,那是 C++17 中的新功能。 -
哈希运算不是应该足够快而不至于太重要吗?
-
你真的需要 O(1) 吗?你知道这是否可能吗?应该扩展什么价值?地图数量?条目数?我的建议:按照 Sam 的建议去做。编码它。观察。学习。