c++ - 为什么 std::map 不提供 key_iterator 和 value_iterator?

标签 c++ iterator standard-library stdmap c++03

我在 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/

相关文章:

c++ - 如何搜索没有名称的函数的定义

c++ - 一些哈希表/unordered_map 问题

java - 在 Java TreeMap 中查找元素位置

c++ - 为什么在 C++ 中对 vector 使用索引运算符被认为是不好的风格?

c++ - 字符串输入从行首开始并以空格结束

c++ - 文件内加密文件系统

c++ - 在使用正则表达式执行函数时逐行解析 inFile

c++ - Visual Studio const_iterator 分配错误

c++ - 指针如何完全排序?

代码块自动完成/调用提示不适用于 C 标准库函数