关于地图排序的问题

时间:2010-07-18 12:27:06

标签: c++

例如我们有地图

map<char,int>mymap;
mymap['a']=101;
mymap['c']=45;
mymap['b']=76;
mymap['d']=98;

我知道如果我们遍历地图,它将按照以下方式打印元素

a>=101;
b>=76;
c>=45;
d>=98;

小键如何引用小值?或

a-45
b-76
c-98
d-101

? 感谢

3 个答案:

答案 0 :(得分:3)

如果我正确理解你,你根本不想永久地关联值,你想要订购两组不同的值,然后在某些时候将它们排成一行。在这种情况下,请不要使用std :: map。您需要两个不同的std :: set(如果您想允许重复值,则为multiset),它们分别对值进行排序。然后在某个时刻迭代两个。

答案 1 :(得分:0)

你必须自己做,地图不会迭代这样的值。一种选择是使用第二个映射,其中交换键和值(如果您可以有重复值,请使用多图)。

答案 2 :(得分:0)

你应该尝试使用boost multi-index,比使用两组/ map和大致相同的速度更少的开销。