C++ multimap 操作

标签 c++ multimap

我创建了一个 multimap ,因为我有重复键。但我想做一个有效的操作,这样我就可以生成一个新的 multimap ,随后更高的键对齐。这就是我的意思:

这是我的:

key        values
11          qwer
11          mfiri
21          iernr
21          ghfnfjf
43          dnvfrf

这就是我想要的

key        values
11          qwer,iernr
11          mfiri,iernr
21         iernr,dnvfrf
21          ghfnfjf,dnvfrf
43          dnvfrf

我有大约 1000 万个条目,所以我正在寻找高效的东西。

上面的值“qwer,iernr”是一个字符串。

最佳答案

这里有一个简单的方法:

auto cur = map.begin();
auto next = map.upper_bound(cur->first);

for(; next != map.end(); next = map.upper_bound(cur->first))
{
    for(; cur != next; ++cur)
    {
        cur->second += ", ";
        cur->second += next->second;
    }
}

...给定一个std::multimap<int, std::string> map;

但是,任何转换 10m+ 元素的操作都不会非常快。

关于C++ multimap 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14407463/

相关文章:

c++ - 如何文件流字符串(包括空格)?

c++ - 需要帮助将 uint8_t 数组转换为 NSMutableData

java - 有没有办法从多图中的值中获取所有键?

c++ - 将值插入到 multimap vector 中

java - 如何从平面 SQL 选择结果集创建嵌套映射

C++ 奇怪的模板/命名空间行为

c++ - 仅使用 C 为目标交叉编译 C++ 应用程序

c++ - STL multimap - 如何获取 multimap 中所有键值的列表

java - 双向多图等效数据结构

c++ - 我应该在模板类头文件中包含我需要的一切吗?