当我使用std::unordered_map<K, V>
时,我知道每个键值对的迭代器都是std::unordered_map<K, V>::iterator
类型。我也知道迭代器本身指的是pair<const K, V>
。但是,我知道迭代器指向一对的唯一原因是查看示例代码。这种行为在哪里定义?
例如,如果我转到the documentation at cppreference.com,我看不到解释此行为的位置。它只表示成员iterator
被定义为ForwardIterator
。
所以,我的问题是,聪明的开发人员将如何知道std::unordered_map<K, V>::iterator
实际代表什么?我确信我缺少一些逻辑上的飞跃。
答案 0 :(得分:1)
对于STL容器
类型为iterator
的对象在被引用时返回类型为reference
的对象,该对象是对value_type
类型的对象的引用。
这些都是在container
。
注意std :: map被定义为容器。此信息是本文档的一部分。
答案 1 :(得分:0)
那么,我的问题是,聪明的开发人员如何知道 std::unordered_map<K, V>::iterator
实际代表什么?我确定我遗漏了一些逻辑上的飞跃。
几分钟前,此页面 (https://en.cppreference.com/w/cpp/container/unordered_map) 现在显示下面的图像。
注意我突出显示的部分。现在清楚地表明 iterator
是“to value_type
”,而 const iterator
是“to const value_type
”。并且 value_type
被指定为 std::pair<const Key, T>
。因此,取消引用一个交互器 (*my_iterator
) 会为您提供一个 value_type
类型的对象,在本例中为 std::pair<const Key, T>
- 对于 std::unordered_map
。现在应该清楚了。
在我研究这个时,我发现相关链接非常有用,按照从最有用到最无用的顺序:
std::unordered_map
参考页] https://www.cplusplus.com/reference/unordered_map/unordered_map/std::unordered_map
参考页] https://en.cppreference.com/w/cpp/container/unordered_map