定义一个map用来演示本次的遍历:
std::map<int, std::string> test; test.insert(std::make_pair(1, "Test")); test.insert(std::make_pair(2, "Product"));
方式1:利用迭代器
//1.1 iterator显示声明 for (std::map<int, std::string>::iterator iter = test.begin(); iter != test.end(); iter++) { std::cout << iter->second << std::endl; } //1.2 iterator auto关键字自动推断类型 for (auto iter = test.begin(); iter != test.end(); iter++) { std::cout << iter->second << std::endl; }
方式2:利用for each语法
//2.1 for each,类型显示声明 for each (std::pair<int, std::string> tt in test) { std::cout << tt.second << std::endl; } //2.2 for each, auto关键字自动推断类型 for each (auto tt in test) { std::cout << tt.second << std::endl; }
方式3:利用增强型for循环
//3.1 增强型for循环 for (auto iter : test) { std::cout << iter.second << std::endl; }
for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,但是a无法影响到b容器中的元素。
for(auto &a:b)中加了引用符号,可以对容器中的内容进行赋值,即可通过对a赋值来做到容器b的内容填充。
方式4:如果是vector容器,可以直接采用下表访问