我在加载和打印我的地图 - 地图 - 矢量数据结构时遇到问题。我认为它在打印方面,因为我不是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()))'得到最后一个值。就我所知,这基本上就是你需要的。 –