gpt4 book ai didi

c++ - 在遍历 map 和打印内容时获取向后输出

转载 作者:行者123 更新时间:2023-11-30 05:14:30 28 4
gpt4 key购买 nike

当我阅读下面发布的代码时,打印的输出似乎是:

Syndy
James
Phuong
Germaine
Agatha
Anges
Jack

但是,当我运行它时,我首先打印了 Germaine 和他的 friend vector ,然后是 Syndy 和她的 friend vector :

Germaine
Agatha
Anges
Jack
Syndy
James
Phuong

谁能帮我理解为什么第二个 key Germaine 在 printFacebook 函数而不是 Syndy 中首先被访问和打印?

#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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com