解除引用iterator-value类型的迭代器

use*_*359 0 c++ stl

如果我想迭代stl地图,通常我会使用

for (it=my_map.begin();it!=my_map.end();it++)
{
}
Run Code Online (Sandbox Code Playgroud)

我知道,如果(typeid(map<int,char>::iterator::value_type) == typeid(pair<const int,char>))的是TRUE,即价值型iteratorstd::map(key_type,value_type)std::pair(const key_type,value_type).

但如果我想这样做

std::pair<const key_type,value_type> b=it; 
Run Code Online (Sandbox Code Playgroud)

编译器会出错吗?

这项任务std::pair<const key_type,value_type> b=*it;有效.

我的问题:iterator pointer to pair或者是什么类型的pair

Lig*_*ica 7

迭代器是迭代器.它们既不是指针,也不是配对.它们是迭代器.

"解除引用" 1来自a的迭代器std::map<K, V>会给你一个std::pair<const K, V>&2,是的,但迭代器本身有自己的类型.


1)*->运营商都重载因为,再次,一个迭代实际上不是在C++意义上的指针来执行此间接.

2)或者a const std::pair<const K, V>&,如果你开始使用std::map<K, V>::const_iterator.