[英]C++ iterating map
众所周知,以下代码用于在C ++中迭代map
for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
{
std::cout << itr->first << " => " << itr->second << '\n';
}
其中itr声明为std :: map :: iterator 。 第一个和第二个成员既不在std :: map中也不在std :: iterator中声明 。 那怎么可以访问?
迭代器背后的基本思想是它们是用于访问数据的“神奇”对象,其行为类似于数组上的指针 - 即您使用算术运算符(例如++
和--
)来移动并取消引用(使用*
和->
)访问数据。
因此, itr
“喜欢”指向std::pair<char, int>
的指针,因此您可以通过*
运算符(产生键/值pair
)或使用->
运算符访问解除引用它的数据,如在你的例子中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.