1
進行遍歷時,當我通過貼在它下面的代碼讀取看來,打印輸出將是:獲取反向輸出通過地圖和打印內容
Syndy
James
Phuong
Germaine
Agatha
Anges
Jack
然而,當我運行它,我得到傑曼和他的矢量朋友第一次印刷,然後Syndy和她的朋友載體第二:
Germaine
Agatha
Anges
Jack
Syndy
James
Phuong
誰能幫我明白爲什麼傑曼,第二個鍵,訪問,並在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自己排序?它如何確定密鑰的順序? – StacksAndParsing
@StacksAndParsing,是的。 'std :: map'有一個用於比較鍵的可選參數。默認是'std :: less'。有關更多詳細信息,請參見http://en.cppreference.com/w/cpp/container/map。 –