qdi*_*dii 0 c++ iterator stdmap standard-library c++03
我在C++ 03环境中工作,并将一个函数应用于地图的每个键是很多代码:
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 );
}
Run Code Online (Sandbox Code Playgroud)
如果key_iterator存在,相同的代码可以利用std::for_each:
std::for_each( m_map.key_begin(), m_map.key_end(), &func );
Run Code Online (Sandbox Code Playgroud)
那为什么不提供呢?有没有办法让第一种模式适应第二种模式?
是的,这是一个愚蠢的缺点.但它很容易纠正:你可以编写自己的通用key_iterator类,它可以从map(pair)迭代器构造.我已经完成了它,它只有几行代码,然后制作value_iterator也是微不足道的.
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |