Comment faire pour récupérer toutes les clés (ou des valeurs) d'un std::map et les mettre dans un vecteur?

C'est l'une des voies possibles et je sors:

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

Bien sûr, nous pouvons également récupérer toutes les valeurs de la carte par la définition d'un autre foncteur RetrieveValues.

Est-il un autre moyen de réaliser cela facilement? (Je me suis toujours demandé pourquoi std::map ne comprend pas une fonction membre pour nous de le faire.)

  • votre solution est la meilleure...
  • La seule chose que je voudrais ajouter t c'est keys.reserve(m.size());.
InformationsquelleAutor Owen | 2008-09-21