我在 C++03 环境中工作,对 map 的每个键应用一个函数是很多代码:
const std::map<X,Y>::const_iterator end = m_map.end();
for (std::map<X,Y>::const_iterator element = m_map.begin(); element != end; ++element)
{
func( element->first );
}
如果 key_iterator
存在,相同的代码可以利用 std::for_each
:
std::for_each( m_map.key_begin(), m_map.key_end(), &func );
那为什么不提供呢?有没有办法使第一种模式适应第二种模式?
最佳答案
是的,这是一个愚蠢的缺点。但它很容易纠正:您可以编写自己的通用 key_iterator 类,它可以从映射(对)迭代器构造。我已经做到了,它只是几行代码,然后制作 value_iterator 也是微不足道的。
关于c++ - 为什么 std::map 不提供 key_iterator 和 value_iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20030074/