logo

C++에서 벡터 정렬

전제 조건: C++의 표준::정렬 , C++의 벡터 , C++에서 벡터 초기화 .

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;> }>



>

>

지도 자바
산출

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

내림차순으로 정렬하는 방법은 무엇입니까?
sort()는 요소가 정렬되는 순서를 지정하는 데 사용되는 세 번째 매개변수를 사용합니다. 내림차순으로 정렬하려면 Greater() 함수를 전달하면 됩니다. 이 함수는 더 큰 요소를 앞에 두는 방식으로 비교를 수행합니다.

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;> }>

>

>

산출

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

에서 정렬하는 방법 특별한 순서?
또한 자체 비교 함수를 작성하여 세 번째 매개변수로 전달할 수도 있습니다.

비교기 함수는 반환된 문이 참인지 거짓인지 확인하고 정렬 함수에 전달되는 부울 값을 반환합니다.

추상 클래스에 생성자가 있을 수 있나요?

예를 들어 간격 i1 = { 6 , 8 } 및 간격 i2 = { 1, 9 }라고 가정해 보겠습니다. 이것이 비교기 함수에 전달되면 비교됩니다. i1.시작 그리고 i2.시작 . 이후 i1.start (=6) 거짓 . 즉, 간격 i1이 간격 i2 앞에 배치되어서는 안 됩니다. 아래는 이 함수에 대한 코드입니다.

CPP




// 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; }>

>

>

산출

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

비교기 함수를 사용하여 일부 매개변수를 기반으로 배열을 내림차순으로 정렬하는 방법은 무엇입니까?

배열의 요소가 내림차순으로 정렬되도록 비교기 함수를 전달할 수 있습니다.

C++




// 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;> }>

>

전기의 장점

>

산출

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

관련 기사 :
쌍의 벡터 정렬 | 세트 1
쌍의 벡터 정렬 | 세트 2