这是我出来的可能方式之一:
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"));
Run Code Online (Sandbox Code Playgroud)
当然,我们也可以通过定义另一个仿函数RetrieveValues从地图中检索所有值.
有没有其他方法可以轻松实现这一目标?(我总是想知道为什么std :: map不包含我们这样做的成员函数.)
Martin Fowler说我们应该在添加新功能之前进行重构(假设原始程序结构不合理).
所以我们都想重构这个脏代码库,这是肯定的.我们也知道,如果没有单元测试代码,很容易引入细微的错误.
但它是一个庞大的代码库.添加一整套测试似乎是不切实际的.
在这种情况下你会做什么?