Как отсортировать мультикарту по значению, которое само по себе является комбинацией пары ключ-значение? - PullRequest
0 голосов
/ 25 января 2020

Я даже не знаю, является ли это правильным способом, но я получаю ошибки без ошибок.

        lli noOfCustomer, noOfCompartment;
        cin>>noOfCustomer>>noOfCompartment;
        multimap<lli, pair< **lli**, pair<lli, lli> > > reservations;
//              compartment_no  diff_in_out    in_time   out_time
        REP(noOfCustomer){
            lli si, fi, pi;
            cin>>si>>fi>>pi;
            lli diff = fi - si;
            reservations.insert(make_pair(pi, make_pair(diff, make_pair(si, fi))));

        multimap<lli, pair< lli, pair<lli, lli> > > :: iterator it;

        for(it = reservations.begin(); it != reservations.end(); it++){
            cout<<(*it).first<<" "<<(*it).second.first<<" "<<(*it).second.second.first<<" "<<(*it).second.second.second<<"\n";
        }
        }

Что я хочу сделать, это сохранить информацию о прибытие поезда (si) и отправление (fi) и сортировка информации в порядке возрастания diff (разница во времени отправления и прибытия).

Предположим, я ввожу информацию в виде

4*(no of trains)* 2*(no of platform)*
si          fi     platform_no
10          100    1
100         200    2
150         500    2
200         300    2

и получаю вывод в виде

platform no  diff     si fi
1            90       10 100
2            100      100 200
2            350      150 500
2            100      200 300


, но хочу, чтобы окончательный результат был отсортирован в порядке возрастания по отношению к ключу сравнения.

platform no  diff     si fi
1            90       10 100
2            100      100 200
2            100      200 300
2            350      150 500

Я просто хочу, чтобы заказ был отсортирован по разнице. Я в замешательстве. Я попытался найти его, но не смог его понять.

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