Gewusst wie: abrufen aller Tasten (oder Werte) von einer std::map und lege Sie in einen vector?

Dies ist eine der Möglichkeiten, aus dem ich komme:

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"));

Natürlich können wir uns auch um alle Werte aus der Karte durch die Definition weiterer Funktor RetrieveValues.

Gibt es eine andere Möglichkeit dies zu erreichen einfach? (Ich bin immer Fragen, warum std::map nicht enthalten ist eine member-Funktion für uns zu tun.)

InformationsquelleAutor der Frage Owen | 2008-09-21

Schreibe einen Kommentar