У меня возникают проблемы с загрузкой и печатью моей структуры данных карты-карты. Я думаю, что это на стороне печати, так как я не уверен на 100%, как использовать итераторы.Как напечатать вложенный map-vector-map
Я создал и загрузил данные в структуру, чтобы сохранить мои данные здесь: (я создал 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 < пары, строка>'. –
@JohnZwinck Я не знал о multimap. Если ключ является парой, я должен поставить пару? Или я могу вернуть все данные, соответствующие входному ключу '3'? – user1362058
Хороший вопрос. Вам нужно искать с помощью пары. Однако вы можете вызвать 'mm.lower_bound (make_pair (3, string()))', чтобы получить первое значение с 3, и 'mm.lower_bound (make_pair (4, string()))', чтобы получить прошлое последнее , Насколько я понимаю, это то, что вам нужно. –