2012-04-02 19 views
2

meine Frage ist, dass ich multimap gemacht habe. Hier ist der Teilcode.Wie ändert man einen Wert in Multimap?

 if(binary_search(final.begin() , final.end() , answer)) 
      { 

      final[answer] =  

      } 
      else 
      { 
       final.insert(pair<string,int>(answer , 1)); 
      } 

Hier Antwort ist ein String und letzte ist ein multimap von <string,int>. Nun, was ich will ist, dass, wenn die String-Antwort vorhanden ist, dann erhöhen (ändern) Sie den Wert von int. Wie kann ich das machen? Ich möchte den Wert von int um eins erhöhen, wenn das string-Element bereits vorhanden ist?

Grüße.

+1

'++ final [Antwort];' – jrok

+1

Was passiert, wenn das 'string' Element mehr als einmal vorhanden ist? Möchten Sie alle Werte oder einen der Werte erhöhen? –

+0

Ich habe sichergestellt, dass es nicht mehr als einmal in der Karte vorhanden sein kann. – InspiredCoder

Antwort

2

Wenn die Schlüssel eindeutig sein sollen, verwenden Sie map. Dann können Sie einfach final[answer]++ tun. Beachten Sie, dass map::operator[] den Schlüssel in die Karte einfügen wird, wenn er nicht bereits vorhanden ist. Der Wert wird während dieses Einfügens standardmäßig erstellt, und der Verweis auf diesen standardmäßig erstellten Wert wird zurückgegeben. Wenn der Schlüssel bereits vorhanden ist, gibt er den Verweis auf das Wertelement zurück.

+0

oh yeah :) jetzt, wie würde ich dann in einer Karte suchen? – InspiredCoder

+0

'++ final [answer]' ist die bevorzugte Methode zum Inkrementieren, es sei denn, Sie benötigen speziell den vorinkrementierten Wert. – Chris

+0

@InspiredCoder: Verwenden Sie 'map :: find'. – Naveen

0

Verwenden Sie eine std::map, wenn der Schlüssel eindeutig ist.

Wenn Sie eine Multimap benötigen (d. H. Sie brauchen mehrere Einträge mit dem gleichen Schlüssel), verwenden Sie? std::lower_bound:

multimap::iterator it = mmap.lower_bound(key); 
while (it != mmap.end() && it->first == key) 
{ 
    // *it is a key-value pair, where you can modify the value 
    it->second.Modify(); 
} 
Verwandte Themen