Как извлечь все ключи (или значения) из std :: map и поместить их в вектор?

Это один из возможных выходов:

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

Конечно, мы также можем извлечь все значения из карты, определив другой функторRetrieveValues.

Есть ли другой способ добиться этого легко? (Мне всегда интересно, почему std :: map не включает функцию-член для нас.)

Ответы на вопрос(14)

Ваш ответ на вопрос