如何创建循环以获取 std::map 的内容

How can I create a loop to get the contents of std::map

我需要使用关联数组,当听说 STL std::map 我决定使用它,我有以下代码。

map<string, string> aArray;
aArray["First"] = "William";
aArray["Second"] = "James";
aArray["Third"] = "Michael";
aArray["Forth"] = "Jayden";
aArray["Fifth"] = "Ashley";

for(std::map<string, string>::iterator it=aArray.begin();it!=aArray.end();++it){
    cout << it << endl;
}

但我不知道如何进行有效循环。
我在其他教程中看到如下内容:

cout << it->first << endl;
cout << it->second << endl;

但是没有任何名为 firstsecond 的成员。

还有一个错误:

请向我解释一下我该怎么做?

1) std::string 不是 char*(并且字符串文字也不是 char*),将地图声明更改为:

map<string, string> aArray;

2) 您需要取消引用 迭代器才能访问对:

for(std::map<string, string>::iterator it=aArray.begin();it!=aArray.end();++it){
    cout << it->first << endl;
    cout << it->second << endl;
}

或:

for(std::map<string, string>::iterator it=aArray.begin();it!=aArray.end();++it){
    cout << (*it).first << endl;
    cout << (*it).second << endl;
}

或者更简单,在 c++11 中你可以只使用一个 for-range 循环:

for(auto&& pair : aArray){
    cout << pair.first << endl;
    cout << pair.second << endl;
}