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

这就是我所拥有的:

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


我有大约一千万的作品,所以我正在寻找高效的作品。

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

最佳答案

看起来直截了当的方式会很好用。地图元素将以升序排列(假设比较运算符适合您)。因此,只要遍历相等的范围并在范围之后立即用元素的值对其进行修改即可完成您想要的操作。

克隆映射(如果需要原始映射),获取第一个元素,获取equal_range()作为其键,使用范围内的第二个迭代器的值修改值(除非它是最后一个)。获取equal_range()作为第二个迭代器的密钥。重复。

10-06 12:38