方法1
#include <iostream>
#include <string>
#include <map>
using namespace std;int main() {map<string, string> nameList = {{"张三丰", "武当山"},{"张无忌", "光明顶"},{"张二蛋", "峨眉山"},};// 方法一for (map<string, string>::iterator i = nameList.begin();i!=nameList.end();i++){cout<<"姓名="<< i->first<<"所在地="<<i->second<<endl;}return 0;
}
方法2
#include <iostream>
#include <string>
#include <map>
using namespace std;int main() {map<string, string> nameList = {{"张三丰", "武当山"},{"张无忌", "光明顶"},{"张二蛋", "峨眉山"},};// 方法二for (auto i = nameList.begin();i!=nameList.end();i++){cout<<"姓名="<< i->first<<"所在地="<<i->second<<endl;}return 0;
}
方法3
#include <iostream>
#include <string>
#include <map>
using namespace std;int main() {map<string, string> nameList = {{"张三丰", "武当山"},{"张无忌", "光明顶"},{"张二蛋", "峨眉山"},};// 方法三,c++11 引入for (auto i : nameList) {cout<<"姓名="<< i.first<<"所在地="<<i.second<<endl; }return 0;
}
最后说下-> 和.
方法3中此时的i不在是迭代器,它的类型是pair<const string,string> ,要访问的是其成员,所以使用 i.first 和 i.second,方法1和方法2 迭代器 i 表示的是容器中元素的位置,但它本身并非实际的对象,而是类似于一个指针,所以使用i->first 和 i->second,
总结:
-> 用于通过指针间接访问类或结构体实例的成员
. 用于直接访问类或结构体实例的成员