我在加載和打印我的地圖 - 地圖 - 矢量數據結構時遇到問題。我認爲它在打印方面,因爲我不是100%確定如何使用迭代器。如何打印嵌套的地圖 - 地圖 - 矢量
我創建並加載數據到結構來存儲我的數據在這裏: (我創建了inner_test和myvector,因爲它看起來像我需要他們的迭代器我不確定迭代器如何知道inner_test和myvector是測試的一部分)
map<int, map<string, vector<string>>> test;
map<string, vector<string>> inner_test;
vector<string> myvector;
ifstream thisfile;
const char *file1 = argv[1];
thisfile.open(file1);
string filler;
while(thisfile >> filler){
string sortedFiller = filler;
sort(sortedFiller.begin(), sortedFiller.end());
test[filler.length()][sortedFiller].push_back(filler);
}
thisfile.close();
我試圖打印它,但我不認爲我很明白我在這裏做什麼。
map<int, map<string, vector<string>>>::iterator itr1;
map<string, vector<string>>::iterator itr2;
vector<string>::iterator itr3;
for(itr1 = test.begin(); itr1 != test.end(); itr1++){
cout << itr1->first;
for(itr2 = inner_test.begin(); itr2 != inner_test.end(); itr2++){
cout << itr2->first;
for(itr3 = myVector.begin(); itr3 != myVector.end(); itr3++){
cout << *itr3;
}
}
cout << endl;
}
您可以使用'multimap,string>'來簡化很多。 –
@JohnZwinck我不知道multimap。如果鑰匙是一對,我必須提供一對嗎?或者我可以返回與輸入鍵'3'相對應的所有數據嗎? – user1362058
好問題。你需要使用一對搜索。然而,你可以調用'mm.lower_bound(make_pair(3,string()))'獲得第一個值爲3,'mm.lower_bound(make_pair(4,string()))'得到最後一個值。就我所知,這基本上就是你需要的。 –