이것은 내가 나오는 가능한 방법 중 하나입니다.
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"));
물론 다른 functor RetrieveValues 를 정의하여 맵에서 모든 값을 검색 할 수도 있습니다 .
이것을 쉽게 달성 할 수있는 다른 방법이 있습니까? (왜 std :: map에 멤버 함수가 포함되어 있지 않은지 항상 궁금합니다.)
keys.reserve(m.size());
입니다.