Elemente aus std::map in Vector: Beyond Functors abrufen
Um Schlüssel oder Werte aus einer std::map zu extrahieren, könnte man das tun Setzen Sie instinktiv Funktoren ein, wie im bereitgestellten Codeausschnitt gezeigt:
struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map<int, int> m; vector<int> keys; transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey());
Während dieser Ansatz technisch gesehen Funktionen, es leidet unter Code-Verschleierung und Ausführungsentfernung vom Ziel.
Alternative Methode: Iterator-Schleife
Eine einfachere Lösung beinhaltet eine einfache Schleife über die Iteratoren der Karte:
for (map<int, int>::iterator it = m.begin(); it != m.end(); ++it) { keys.push_back(it->first); }
Diese Methode bietet eine klare Lesbarkeit und einfache Änderung, um Werte abzurufen Schlüssel.
Boost-Bibliotheksansatz
Wenn Sie die Boost-Bibliothek verwenden, können Sie BOOST_FOREACH für noch mehr Einfachheit verwenden:
pair<int, int> me; // map element type vector<int> v; BOOST_FOREACH(me, m) { v.push_back(me.first); }
Dieser Ansatz bietet Explizitheit und Prägnanz.
Zusammenfassend: Während die Funktormethode eine gültige Option bleibt, sind die Iteratorschleife und die Boost-Bibliothek eine gültige Option Ansätze bieten einfachere und intuitivere Möglichkeiten, Elemente aus einer std::map in einen Vektor abzurufen.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich effizient Schlüssel oder Werte aus einer std::map in einen Vektor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!