如果我想迭代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,即价值型iterator的std::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?
迭代器是迭代器.它们既不是指针,也不是配对.它们是迭代器.
"解除引用" 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.