Heim >Backend-Entwicklung >C++ >C++-Programm zum Aktualisieren des Wörterbuchwerts nach Schlüssel

C++-Programm zum Aktualisieren des Wörterbuchwerts nach Schlüssel

王林
王林nach vorne
2023-08-28 22:37:061058Durchsuche

C++-Programm zum Aktualisieren des Wörterbuchwerts nach Schlüssel

Viele Computersprachen stellen ein Wörterbuch bereit, bei dem es sich um eine Datenstruktur handelt. Ein Wörterbuch ist eine schnellere Datenstruktur, die Daten basierend auf Schlüsseln und Werten speichert. Es behält Schlüssel-Wert-Kombinationen bei, sodass Schlüssel nahezu in Echtzeit problemlos nach bestimmten Komponenten durchsucht werden können. Der C++-STL-Sprachstandard umfasst wörterbuchähnliche Datenstrukturen. Zur Beschreibung dieser Datenstruktur wird der Begriff „map“ verwendet. Diese Karte erstellt ein Paar aus Schlüsseln und Werten eines beliebigen Typs (da wir C++ verwenden, müssen die Typen vor der Kompilierung definiert werden). In diesem Abschnitt wird gezeigt, wie Werte in einer vorhandenen Karte oder einem vorhandenen Wörterbuch in C++ aktualisiert werden.

Sehen wir uns zunächst die Definition der Kartendatenstruktur an. Diese internen Vorlagen erfordern zwei verschiedene Typen. Die Syntax und die notwendigen Bibliotheken werden unten angezeigt -

Syntax zum Definieren der Kartendatenstruktur

#include <map>
map<type1, type2=""> mapVariable;
</type1,></map>

In diesem Fall müssen wir die „map“-Bibliothek importieren, um die Kartendatenstruktur zu verwenden. Hierzu sind die Datentypen 1 und 2 erforderlich. Der Datentyp des Schlüsselparameters ist Typ1 und der Datentyp des Wertparameters ist Typ2. Hier ist das von der Kartentypklasse abgeleitete Objekt „mapVariable“. Sehen wir uns nun an, wie man es mithilfe der C++-Zuordnung erhält.

In der Kartendatenstruktur können wir Werte in die Karte einfügen, indem wir auf den vorhandenen oder neuen Schlüssel zugreifen. Da es sich hier um die Aktualisierung eines Werts handelt, müssen wir den vorhandenen Schlüssel aktualisieren. Schlüssel werden in eckigen Klammern wie in der Array-Index-Notation verwendet. Schauen wir uns die Syntax dieses -

an

Aktualisieren Sie die Syntax der Elemente innerhalb der Karte

mapVariable [<the key="" value="">] = <the new="" value="">;
</the></the>

Algorithmus

  • Erstelltes Wörterbuch oder Karte D

  • Hat bereits den Schlüsselwert k

  • Der Wert v

  • des neuen Schlüssels k
  • Update wie D[ k ] = v

  • Zurück nach D

Beispiel

#include <iostream> 
#include <map> 
using namespace std;

void display( map <string, int>& givenMap ){
   for ( auto& it : givenMap ) {
      cout << "Key: " << it.first << ", value: " << it.second << endl;
   }
}
   
int main(){ 
   map<string, int> givenMap;
   
   givenMap = { { "ABCD", 25 },
        { "EFGH", 50 },
        { "IJKL", 75 },
        { "MNOP", 100 },
        { "QRST", 125 }
   };
   
   cout << "Before updation: " << endl;
   display( givenMap );
  
   cout << "After Updation: " << endl;
   
   //update the value of MNOP to 500
   givenMap[ "MNOP" ] = 500; 
   display( givenMap );
}

Ausgabe

Before updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 100
Key: QRST, value: 125
After Updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 500
Key: QRST, value: 125

Bei dieser Methode haben wir den Wert erfolgreich aktualisiert, indem wir auf den Schlüsselparameter zugegriffen haben. Allerdings ist dieser Vorgang möglicherweise nicht immer genau. Dieses Verfahren hat einen schwerwiegenden Nachteil: Der angegebene Schlüssel ist möglicherweise nicht in der Karte vorhanden. Durch diesen Vorgang wird jedoch ein neuer Schlüssel mit dem angegebenen Wert eingefügt. In der nächsten Methode werden wir also sehen, wie man ein Element nach einer erfolgreichen Suche sucht und aktualisiert.

Update nach Suche

Mit der Funktion find() im Kartenobjekt können Sie prüfen, ob ein bestimmter Schlüssel in der Karte vorhanden ist. Es wird eine Zeigerreferenz auf den Schlüssel zurückgegeben, andernfalls wird der Zeiger „end()“ auf die Karte zurückgegeben, was bedeutet, dass die Karte kein Element darin enthält. Schauen wir uns zum besseren Verständnis den Algorithmus und die Implementierung an.

Algorithmus

  • Erstelltes Wörterbuch oder Karte D

  • Hat bereits den Schlüsselwert k

  • Der Wert v

  • des neuen Schlüssels k
  • Erstellen Sie ein Iteratorobjekt itr, um den Zeiger des Schlüssel-Wert-Paares abzurufen

  • Rufen Sie die Methode find() auf, um das Wörterbuch D in itr einzufügen

  • Wenn itr nicht das Ende von D ist, was bedeutet, dass der Schlüssel existiert, dann

    • Geben Sie v in itr ein

  • Ende wenn

Beispiel

#include <iostream> 
#include <map> 
using namespace std;

void display( map <string, int>& givenMap ){
   for ( auto& it : givenMap ) {
      cout << "Key: " << it.first << ", value: " << it.second << endl;
   }
}

void updateElement( map <string, int>& givenMap, string givenKey, int newValue ){
   map <string, int>::iterator itr;
   itr = givenMap.find( givenKey );
   if( itr != givenMap.end() ){   // when item has found
      itr->second = newValue;
   }
}
   
int main(){ 
   map<string, int> givenMap;
   
   givenMap = { { "ABCD", 25 },
        { "EFGH", 50 },
        { "IJKL", 75 },
        { "MNOP", 100 },
        { "QRST", 125 }
   };
   
   cout << "Before updation: " << endl;
   display( givenMap );
  
   cout << "After Updation: " << endl;
   
   //update the value of MNOP to 500
   updateElement( givenMap, "MNOP", 1580 );
   display( givenMap );
}

Ausgabe

Before updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 100
Key: QRST, value: 125
After Updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 1580
Key: QRST, value: 125

Bei dieser Methode verwendet die Funktion updateElement als Eingabe die Karte, den vorhandenen Schlüssel und den neuen Wert. Suchen Sie dann nach diesem Schlüssel. Aktualisieren Sie einfach den Wert, falls vorhanden, andernfalls leiten Sie ihn einfach von der Funktion ab. Mit dieser Methode können wir also keine neuen Einträge in der Karte erstellen, sondern nur bestehende Einträge aktualisieren.

Fazit

In diesem Artikel haben wir gelernt, wie man Elemente in einer Karte mithilfe von Schlüsseln aktualisiert. Bei der ersten Methode verwenden wir die direkte Zuweisungsmethode, die das Element erfolgreich aktualisiert, aber auch neue Elemente hinzufügen kann, wenn der Schlüssel noch nicht vorhanden ist. Die zweite Methode beseitigt dieses Problem, indem sie zu Beginn eine einfache Suche durchführt. Manchmal bemerken wir möglicherweise, dass die zweite Methode mehr Zeit benötigt, um nach dem Schlüssel zu suchen und ihn dann zu aktualisieren. Daher ist mehr Suchzeit erforderlich als bei der ersten Methode. Aber wenn wir sorgfältig nachdenken, wird diese Entdeckung bei der ersten Methode im Wesentlichen auch realisiert. Da die Datenstruktur Hash-basierte Techniken verwendet, wird sie (in den meisten Fällen) in konstanter Zeit ausgeführt.

Das obige ist der detaillierte Inhalt vonC++-Programm zum Aktualisieren des Wörterbuchwerts nach Schlüssel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen