当我阅读下面发布的代码时,似乎输出的输出为:
Syndy
James
Phuong
Germaine
Agatha
Anges
Jack
但是,当我运行它时,我首先打印出Germaine和他的 friend vector ,然后是第二张Syndy和她的 friend vector :
Germaine
Agatha
Anges
Jack
Syndy
James
Phuong
谁能帮助我理解为什么第二个关键字Germaine而不是Syndy会首先在
printFacebook
函数中访问和打印?#include <iostream>
#include <vector>
#include <string>
#include <map>
using namespace std;
void printFacebook(map<string, vector<string>>& m) {
for (pair<string, vector<string>> p : m) {
cout << p.first << endl;
for (string f : p.second) {
cout << "\t" << f << endl;
}
}
}
int main() {
map<string, vector<string>> facebook;
facebook["Syndy"].push_back("James");
facebook.find("Syndy")->second.push_back("Phuong");
//map<string, vector<string>>::iterator f = facebook.find("Syndy");
//auto f = facebook.find("Syndy");
facebook["Germaine"];
facebook.find("Germaine")->second.push_back("Agatha");
facebook.find("Germaine")->second.push_back("Anges");
facebook.find("Germaine")->second.push_back("Jack");
printFacebook(facebook);
}
最佳答案
std::map
存储按键值排序的项。在您的情况下,键是"Syndy"
和"Germaine"
。这些的默认顺序是"Germaine"
为第一,而"Syndy"
为第二。
因此,当您遍历 map 项时,与键"Germaine"
对应的项会在与键"Syndy"
对应的项之前被看到。
那解释了输出。
关于c++ - 遍历 map 和打印内容时向后输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43434134/