Heim > Backend-Entwicklung > C++ > Wie behalte ich die Einfügereihenfolge beim Speichern von Schlüssel-Wert-Paaren in C bei?

Wie behalte ich die Einfügereihenfolge beim Speichern von Schlüssel-Wert-Paaren in C bei?

Patricia Arquette
Freigeben: 2024-12-07 01:02:11
Original
242 Leute haben es durchsucht

How to Maintain Insertion Order When Storing Key-Value Pairs in C  ?

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

  • std ::vector>: Die Verwendung eines Vektors zum Speichern der Paare bietet eine einfache Verfolgung der Einfügungsreihenfolge, aber Bei häufigen Suchvorgängen (10.000.000 Mal) kann es langsamer sein.
  • boost::multi_index: Diese Bibliothek stellt einen erweiterten Container bereit, der mehrere Indizes für dieselbe Datenstruktur ermöglicht. Es kann verwendet werden, um einen Index für die Einfügereihenfolge zu erstellen, wodurch es möglich wird, die Paare in dieser Reihenfolge zu iterieren und darauf zuzugreifen.

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage