Heim > Backend-Entwicklung > C++ > Wie extrahiere ich Schlüssel und Werte effizient aus einer std::map in Vektoren?

Wie extrahiere ich Schlüssel und Werte effizient aus einer std::map in Vektoren?

Mary-Kate Olsen
Freigeben: 2024-11-29 20:30:11
Original
597 Leute haben es durchsucht

How to Efficiently Extract Keys and Values from a std::map into Vectors?

Abrufen von Schlüsseln oder Werten aus einer std::map in einen Vektor

Abrufen aller Schlüssel oder Werte aus einer std::map in einen vector ist eine häufige Aufgabe, aber std::map selbst verfügt für diesen Zweck nicht über eine explizite Memberfunktion. Ein Ansatz besteht darin, benutzerdefinierte Funktoren zu definieren, wie im bereitgestellten Code gezeigt:

struct RetrieveKey
{
    template <typename T>
    typename T::first_type operator()(T keyValuePair) const
    {
        return keyValuePair.first;
    }
};

map<int, int> m;
vector<int> keys;

// Retrieve all keys
transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey());

// Dump all keys
copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n"));
Nach dem Login kopieren

Diese Lösung manipuliert die Daten außerhalb der Karte, was in manchen Fällen möglicherweise nicht ideal ist. Ein alternativer Ansatz, der eine einfache For-Schleife verwendet, bietet eine klarere und explizitere Lösung:

map<int, int> m;
vector<int> key, value;
for (auto it = m.begin(); it != m.end(); ++it) {
  key.push_back(it->first);
  value.push_back(it->second);
  cout << "Key: " << it->first << endl;
  cout << "Value: " << it->second << endl;
}
Nach dem Login kopieren

Indem wir die Karte auf diese Weise durchlaufen, können wir sowohl Schlüssel als auch Werte direkt in Vektorcontainer extrahieren.

Eine weitere Option vereinfacht den Prozess bei Verwendung der Boost-Bibliothek weiter:

map<int,int> m;
pair<int,int> me; // what a map<int, int> is made of
vector<int> v;
BOOST_FOREACH(me, m) {
  v.push_back(me.first);
  cout << me.first << "\n";
}
Nach dem Login kopieren

Diese Version ist prägnant, lesbar und bietet explizite Kontrolle über die Abrufprozess. Die Auswahl der am besten geeigneten Methode hängt von den spezifischen Bedürfnissen und Vorlieben des Entwicklers ab.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich Schlüssel und Werte effizient aus einer std::map in Vektoren?. 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