sortowanie tablicy par

0

Choć właściwie całość problemu znajduje się w tytule, to może jednak coś napisze. Chcę posortować tablice par
pair<int, int> para[ilosc];
nieistotne, po ktorym elemencie, zawsze moge przy make.pair() zamienic argumenty miejscami. Chcę to zrobic sortem z algorithm. Jak?

1

Czytając dokumentacje?
http://www.cplusplus.com/reference/algorithm/sort/
Masz tu nawet przykład z użyciem własnego komparatora. Napisz komparator który porównuje pary tak jak sobie chcesz i przekaż go jako 3 argument.

0

Właśnie za cholere nie potrafie tego zrozumiec, dlatego tu pisze.

1

Ale czego dokładnie? Trzecim argumentem może być funkcja która określa który z dwóch argumentów jest "większy" i tyle.

#include <iostream>
#include <algorithm>
#include <utility>
#include <ctime>
#include <vector>
using namespace std;

int comparator(pair<int,int> first, pair<int,int> second){
    return first.first < second.first;
}

int main(){

    vector<pair<int,int> > pairs;
    srand(time(0));
    for (int i=0;i<100;i++){
        pair<int,int> element(rand()%100, rand()%100);
        pairs.push_back(element);
    }
    sort(pairs.begin(), pairs.end(), comparator);

    for (int i=0;i<100;i++){
        cout<<pairs[i].first<<" "<<pairs[i].second<<endl;
    }
    return 0;
}
0

[code]
bool mycomp(pair<int, int> para[2])
{
if(para[0].second>para[1].second) return 0;
return 1;
}[/code]
nie do konca jestem pewien, co ma zwracac ta funkcja i jak się to ma do sorta.

EDIT: ok, czaje, dzieki wielkie :)

0
sort(begin(tab), end(tab), [](pair<int, int> v1, pair<int, int> v2) { return v1.first < v2.first; });
0

Wydaje mi się że nikt nie czyta pytania w którym jako alternatywę temu sortowaniu autor podaje:

zonkoo23 napisał(a):

... zawsze moge przy make.pair() zamienic argumenty miejscami

Czyli chodzi o zrobienie N dwuelementowych sortowań, gdzie N to ilość par.
Tak ja to rozumiem.

0

@_13th_Dragon to chyba jednak nie rozumiesz ;] Autor napisał ze nie obchodzi go czy sortujemy po pierwszym czy po drugim elemencie pary bo przecież kiedy je tworzy to może zamiast (x,y) dać (y,x) ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1