Đây là một trong những cách có thể tôi đi ra:
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"));
Tất nhiên, chúng ta cũng có thể truy xuất tất cả các giá trị từ bản đồ bằng cách xác định một functor khác RetrieveValues .
Có cách nào khác để đạt được điều này một cách dễ dàng? (Tôi luôn tự hỏi tại sao std :: map không bao gồm chức năng thành viên để chúng tôi làm như vậy.)
keys.reserve(m.size());
.