2010-07-18 153 views
0

例如,我們有地圖問題排序

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

如果我正確地理解了你,你根本不想永久關聯值,你想要訂購兩套不同的值,然後將它們排列在一起。在這種情況下,不要使用std :: map。你需要兩個不同的std :: set(或multiset,如果你想允許重複的值),它們分別對這些值進行排序。然後在某個點上一起迭代兩者。

0

你必須自己做,地圖不會迭代這樣的值。一種選擇是使用第二個映射,其中鍵和值被交換(如果可以有重複值,則使用多映射)。

0

你應該嘗試使用boost multi-index,比使用兩套/地圖和大致相同的速度更少的開銷。