c++ - 删除 multimap 中重复项的有效方法?

标签 c++ stl

在 C++ 中删除大型多重映射中的重复项的最佳方法是什么?比如我有一个multimap,key <1,4> 和它的值为9 出现了两次,如何快速摆脱它?谢谢

...
<1,2> --> 3
<1,3> --> 7
<1,4> --> 9
<1,4> --> 9
...

我希望它成为

...
<1,2> --> 3
<1,3> --> 7
<1,4> --> 9
...

最佳答案

一种需要 O(n) 时间的方法是将原始 map 复制到新 map 。例如,

multimap<T,U> original_map; 
multimap<T,U> new_map; 

while (original_map.size() > 0) 
{ 
    auto element = *(original_map.begin()); 
    new_map.insert(make_pair(element.first,element.second)); 
    original_map.erase(element.first); 
}

注意:这是假设重复条目的标准是仅具有相同键的条目。

关于c++ - 删除 multimap 中重复项的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189269/

相关文章:

c++ - C++ 中 dynamic_cast 的真实示例

SGX 飞地边缘函数的 C++ 参数

c++ - 程序在析构函数处崩溃

c++ - 使用变换创建新 vector

c++ - 在 C++ 中反转集合的内容

c++ - 没有或最小开销的函数组合宏

c++ - SFINAE应用于迭代器

c++ - 迭代器操作问题

C++ std::set::erase 不起作用

c++ - 为什么 std::map 需要一对?