Heim >Backend-Entwicklung >C++ >Wie kann man in einer C std::map effizient auf Schlüsselexistenz prüfen?

Wie kann man in einer C std::map effizient auf Schlüsselexistenz prüfen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 10:56:10961Durchsuche

How to Efficiently Check for Key Existence in a C   std::map?

Überprüfen der Existenz eines Schlüssels in einer std::map

Im Bereich des modernen C bietet sich die Datenstruktur std::map an eine ausgefeilte Implementierung eines geordneten assoziativen Containers. Bei der Arbeit mit Karten besteht eine häufige Aufgabe darin, das Vorhandensein eines bestimmten Schlüssels in der Sammlung zu ermitteln.

Beachten Sie den bereitgestellten Codeausschnitt:

typedef map<string,string>::iterator mi;
map<string, string> m;
m.insert(make_pair("f","++--"));
pair<mi,mi> p = m.equal_range("f");
cout << p.first;

Der Code versucht zu überprüfen, ob der Schlüssel vorhanden ist „f“ existiert innerhalb der Karte. Es verwendet jedoch die Methode equal_range, die möglicherweise nicht dem beabsichtigten Zweck entspricht. Um effektiv zu prüfen, ob ein Schlüssel vorhanden ist, besteht ein geeigneterer Ansatz darin, die Find-Methode in Verbindung mit dem End-Iterator zu verwenden:

if (m.find("f") == m.end()) {
  // Key "f" not found
} else {
  // Key "f" found
}

Mit der Find-Methode können Sie einen Iterator abrufen, der auf das Element mit dem angegebenen Wert zeigt Schlüssel. Wenn der Schlüssel nicht vorhanden ist, entspricht der zurückgegebene Iterator dem Enditerator der Karte. Mit diesem einfachen, aber effizienten Mechanismus können Sie mühelos feststellen, ob ein Schlüssel in einer std::map vorhanden ist oder nicht.

Das obige ist der detaillierte Inhalt vonWie kann man in einer C std::map effizient auf Schlüsselexistenz prüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn