这是我提出的一种可能的方法:
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
没有包含一个成员函数来做到这一点。)
keys.reserve(m.size());
。我的翻译如下:我只会在这里添加keys.reserve(m.size());
。 - Galik