转载自
https://blog.csdn.net/m_buddy/article/details/72854199
一般情况下在C++下遍历一个容器的方法是这样的
std::vector<int> array = {1, 2, 3, 4, 5};
for(auto it=array.begin(), it !=array.end(); ++it)
{
std::cout << *it << "\t";
}
现在,C++11中有了基于范围的for循环,那么之前我们写的遍历容器的方法就可以写成这样
for(auto item : array)
{
cout << item << "\t";
}
上面的代码都是对容器进行只读式访问,在for循环中也可以对容器中的值进行修改操作:
for(auto& item : array)
{
cout << item++ << "\t";
}
(1)auto自动推导出的类型是容器中的value_type,而不是迭代器
std::map<std::string, int> array = {{"a", 1}, {"b", 2}, {"c", 3}};
for(auto& item : array)
{
std::cout << item.first << "->" << item.sencond << std::endl;
}
注意:上面for循环的推导变量item取first和second元素的时候使用的是“.”操作符,而不是“->”操作符,是因为item不是迭代器类型的