Невозможно понять работу карты с мультимножеством как mapped_type - PullRequest
0 голосов
/ 03 октября 2019

Я наткнулся на программу, предназначенную для печати имен авторов и их книг в алфавитном порядке, и попытался понять это

авторы - это мультикарта, ключ-тип которой содержит имя автора, а 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...