Я наткнулся на программу, предназначенную для печати имен авторов и их книг в алфавитном порядке, и попытался понять это
авторы - это мультикарта, ключ-тип которой содержит имя автора, а mapped_type - их книгу. Теперь order_authors - это карта, не должна ли она игнорировать имя автора "Стивен Кинг", когда она указана во второй раз с mapped_type "It", и не использовать вставку. Но я не понимаю, как программа достигает того, для чего она предназначена, я прошу кого-нибудь объяснить, пожалуйста, рабочий
#include<iostream>
#include<string>
#include<map>
#include<set>
using namespace std;
int main() {
using multi_map = std::multimap<string, string>;
multi_map authors =
{ {"Stephen King","Misery"},{"C. S. Lewis","A Grief Observed"},
{"Stephen King","It"},{"Charles Dickens","Oliver Twist"} };
std::map<string, std::multiset<string>> order_authors;
for (const auto &author : authors)
order_authors[author.first].insert(author.second);
for (const auto &author : order_authors) {
cout << author.first << " -> ";
for (const auto &work : author.second)
cout << work << ". ";
cout << endl;
}
return 0;
}
Ожидаемый и фактический результат:
CS Льюис -> Наблюдение за горем.
Чарльз Диккенс -> Оливер Твист.
Стивен Кинг -> Ит. Misery.