[STL] sort() 정렬 예제[STL] sort() 정렬 예제

Posted at 2014. 12. 25. 21:58 | Posted in C++/STL



facebook에 글올리기



[STL] sort() 정렬 예제


순차열을 정렬하는 sort 알고리즘은 임의 접근 반복자(Random access iterator)를 요구하므로 vector와 deque에 sort() 알고리즘이 가능하다. 다른 컨테이너는 불가능하다.

(연관 컨테이너는 컨테이너만의 정렬 기준을 가지고 있기 때문에 sort 알고리즘 적용이 말이 안된다.)


sort(v.begin(), v.end());


위와 같이 vector의 begini과 end를 사용하여 범위를 지정하면, 해당 범위에서 오름차순으로 정렬을 한다.


하지만 필요에 따라 정렬 기준을 변경할 필요가 있다.

이럴 경우 함수 객체를 인자로 넘겨주면, 해당 함수 객체의 기준에 따라 정렬을 시도한다.


아래는 less 와 greater를 사용하여 정렬한 예제이다.


[C++/STL] - [STL] less, greater, plus, minus 예제



 Colored By Color Scripter

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;


int main(){

    vector<int> v;
    v.push_back(50);
    v.push_back(10);
    v.push_back(20); 
    v.push_back(40);
    v.push_back(30);

    sort(v.begin(), v.end());    // (기본) 오름차순 정렬
    for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++){
        cout << *iter << " ";
    }
    cout << endl;

    sort(v.begin(), v.end(), less<int>());    // 오름차순 정렬
    for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++){
        cout << *iter << " ";
    }
    cout << endl;

    sort(v.begin(), v.end(), greater<int>());    // 내림차순 정렬
    for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++){
        cout << *iter << " ";
    }
    cout << endl;

    return 0;
}


결과 :

10 20 30 40 50

10 20 30 40 50

50 40 30 20 10


위와 같이 넘겨준 함수 객체의 기준에 따라 정렬을 하게 된다.


'C++ > STL' 카테고리의 다른 글

[STL] 역방향 반복자 (reverse_iterator)  (0) 2014.12.25
[STL] 스택(stack) 기본 예제  (0) 2014.12.25
[STL] sort() 정렬 예제  (0) 2014.12.25
[STL] find() 함수 예제  (0) 2014.12.25
[STL] 반복자 iterator 개념 및 예제  (0) 2014.12.25
[STL] less, greater, plus, minus 예제  (0) 2014.12.25
이웃추가
facebook에 글올리기

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기