logo

Sortera en vektor i C++

Förutsättningar: std::sort i C++ , vektor i C++ , initiera en vektor i C++ .

java delsträng

CPP








// C++ program to sort a vector in non-decreasing> // order.> #include> using> namespace> std;> > int> main()> {> >vector<>int>>v{ 1, 5, 8, 9, 6, 7, 3, 4, 2, 0};> > >sort(v.begin(), v.end());> > >cout <<>'Sorted '>;> >for> (>auto> x : v)> >cout << x <<>' '>;> > >return> 0;> }>



>

>

Produktion

Sorted 0 1 2 3 4 5 6 7 8 9>

Hur sorterar man i fallande ordning?
sort() tar en tredje parameter som används för att specificera i vilken ordning element ska sorteras. Vi kan skicka funktionen greater() för att sortera i fallande ordning. Denna funktion gör jämförelser på ett sätt som sätter större element före.

CPP




// C++ program to sort a vector in non-increasing> // order.> #include> using> namespace> std;> > int> main()> {> >vector<>int>>v{ 1, 5, 8, 9, 6, 7, 3, 4, 2, 0};> > >sort(v.begin(), v.end(), greater<>int>>());> > >cout <<>'Sorted '>;> >for> (>auto> x : v)> >cout << x <<>' '>;> > >return> 0;> }>

>

>

Produktion

Sorted 9 8 7 6 5 4 3 2 1 0>

Hur man sorterar i en särskild ordning?
Vi kan också skriva vår egen komparatorfunktion och skicka den som en tredje parameter.

Komparatorfunktionen kontrollerar, om påståendet returneras, är sant eller falskt och returnerar ett boolvärde som skickas till sorteringsfunktionen.

Låt oss till exempel säga Intervall i1 = { 6 , 8 } och Intervall i2 = { 1, 9 }. När detta skickas till komparatorfunktionen jämförs det i1.starta och i2.start . Sedan, i1.start (=6) falskt. Det betyder att Interval i1 inte ska placeras före Interval i2. Nedan finns koden för denna funktion.

CPP


powershell multiline kommentar



// A C++ program to sort vector using> // our own comparator> #include> using> namespace> std;> > // An interval has start time and end time> struct> Interval {> >int> start, end;> };> > // Compares two intervals according to starting times.> bool> compareInterval(Interval i1, Interval i2)> {> >return> (i1.start } int main() { vector v { { 6, 8 }, { 1, 9 }, { 2, 4 }, { 4, 7 } }; // sort the intervals in increasing order of // start time sort(v.begin(), v.end(), compareInterval); cout << 'Intervals sorted by start time : '; for (auto x : v) cout << '[' << x.start << ', ' << x.end << '] '; return 0; }>

>

>

Produktion

Intervals sorted by start time : [1, 9] [2, 4] [4, 7] [6, 8]>

Hur sorterar man matrisen i fallande ordning baserat på någon parameter med hjälp av en komparatorfunktion?

En komparatorfunktion kan skickas på ett sådant sätt att elementen i arrayen sorteras i fallande ordning.

C++


java datum aktuellt



// A C++ program to sort vector using> // our own comparator> #include> using> namespace> std;> > // An interval has start time and end time> struct> Interval {> >int> start, end;> };> > // Compares two intervals according to ending times in descending order.> bool> compareInterval(Interval i1, Interval i2)> {> >return> (i1.end>i2.end);> }> > int> main()> {> >vector v { { 6, 8 }, { 1, 9 }, { 2, 4 }, { 4, 7 } };> > >// sort the intervals in decreasing order of> >// end time> >sort(v.begin(), v.end(), compareInterval);> > >cout <<>'Intervals sorted by ending time in descending order : '>;> >for> (>auto> x : v)> >cout <<>'['> << x.start <<>', '> << x.end <<>'] '>;> > >return> 0;> }>

>

>

Produktion

Intervals sorted by ending time in descending order : [1, 9] [6, 8] [4, 7] [2, 4]>

Relaterade artiklar :
Sortera en vektor av par | Set 1
Sortera en vektor av par | Set 2