Я пытаюсь найти вложенную MultiMap, в которой внешняя Multimap имеет строковое значение ключа, а значением для каждого ключа является другая мультикарта, в которой строки в виде пар «ключ-значение» показаны следующим образом:
multimap<string,map<string, string>> myMultMap;
myMultMap.insert(make_pair("distinct", makeMap("noun", "This is the first definition")));
myMultMap.insert(make_pair("distinct", makeMap("verb", "This is the second definition")));
myMultMap.insert(make_pair("distinct", makeMap("adjective", "This is the third definition")));
myMultMap.insert(make_pair("book", makeMap("noun", "This is the book noun definition")));
myMultMap.insert(make_pair("book", makeMap("verb", "This is the book verb definition")));
myMultMap.insert(make_pair("other", makeMap("noun", "This is the other noun definition")));
myMultMap.insert(make_pair("dumb", makeMap("noun", "This is the dumb noun definition")));
Я пытаюсь сделать его интерактивной, доступной для поиска картой / словарем, чтобы при вводе «книги» выводилось ключевое слово «книга», а также определение глагола и определение существительного:
Выход:
книга [существительное]: Это определение существительного книги
книга [глагол]: это определение глагола книги
До сих пор я пытался использовать итераторы и метод .equals_range () в классе multimap, и он работает, если я использую " существительное " в качестве второго параметра поиска, но если я ищу глагол ничего не появляется.
pair <multimap<string, string>::iterator, multimap<string, string>::iterator> ret;
auto iter = myMultMap.find(str)->second;
ret = iter.equal_range("noun");
for (multimap<string,string>::iterator it=ret.first; it!=ret.second; ++it) {
std::cout << str << " =>";
std::cout << ' ' << it->second;
}
std::cout << '\n';
Любая помощь будет принята с благодарностью.
редактировать
Я забыл добавить, что внешняя мультикарта также имеет несколько определений для каждой части речевого ключа.
myMultMap.insert(make_pair("book", makeMap("noun", "This is the 1 definition")));
myMultMap.insert(make_pair("book", makeMap("verb", "This is the book verb def1")));
myMultMap.insert(make_pair("book", makeMap("verb", "This is the book verb def 2")));
myMultMap.insert(make_pair("book", makeMap("verb", "This is the book def 1")));
myMultMap.insert(make_pair("book", makeMap("noun", "This is the book noun def 2")));