我已经创建了一个多图,因为我有重复的键。但是我想做一个有效的操作,以便可以生成一个新的多图,并随后对齐更高的键。这就是我的意思:
这就是我所拥有的:
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()
作为第二个迭代器的密钥。重复。