Eingefügte Schlüssel-Wert-Paare in der richtigen Reihenfolge mit std::map speichern
Ein std::map ist eine Containerdatenstruktur, die Schlüssel speichert -Wert-Paare in sortierter Reihenfolge basierend auf dem Schlüssel. Wenn jedoch die Einfügereihenfolge der Paare beibehalten werden muss, bietet die Karte diese Funktionalität nicht mehr.
Alternative Lösungen
Codebeispiel:
Überlegen Dieses Code-Snippet verwendet den boost::multi_index-Ansatz:
#include <boost/multi_index_container.hpp> #include <boost/multi_index/member.hpp> #include <boost/multi_index/random_access.hpp> #include <boost/multi_index/hashed_unique.hpp> struct value_t { std::string s; int i; }; struct string_tag {}; typedef boost::multi_index_container< value_t, boost::multi_index::indexed_by< boost::multi_index::random_access<>, // Insertion order index boost::multi_index::hashed_unique<boost::multi_index::tag<string_tag>, boost::multi_index::member<value_t, std::string, &value_t::s>> > > values_t;
In diesem Beispiel verwendet der Container „values_t“ zwei Indizes: ein Einfügungsreihenfolgeindex und ein Hash-eindeutiger Index für das s-Mitglied. Dies ermöglicht sowohl eine geordnete Iteration als auch effiziente Suchvorgänge mit der s-Taste.
Das obige ist der detaillierte Inhalt vonWie behalte ich die Einfügereihenfolge beim Speichern von Schlüssel-Wert-Paaren in C bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!