【发布时间】:2011-11-20 11:29:07
【问题描述】:
我有一个映射(例如,从字符到整数)。我将值一一插入到这张地图中。例如,这里有四个插入:
1: A -> 1
2: B -> 2
3: C -> 3
4: D -> 1
我想根据关联的值对映射键进行排序。所以,在每次插入时,我都会得到排序后的输出:
1: A(1)
2: B(2), A(1)
3: C(3), B(2), A(1)
4: C(3), B(2), A(1), D(1)
此外,我希望能够覆盖现有映射以保持键(字符)的唯一性。所以第五次插入:
5: A -> 27
将导致排序后的输出为:
5: A(27), C(3), B(2), D(1)
我可以做到这一点的一种方法是使用多图。多重映射的键是整数,值是字符。每次插入多张地图时首先需要检查该字符是否已经存在于多张地图中,并在执行插入之前删除该映射。多重映射使键保持有序,从而负责排序。
有没有更快的方法来做到这一点?我应该使用其他更高效的容器吗?
编辑
这是我正在使用的C++ STL multimap。它很方便,因为它保留了它的元素internally ordered。
这是related question。我试图避免执行已接受的解决方案中的建议:创建另一张地图。
【问题讨论】: