C++ vector 를 정렬하거나, 역순으로 돌리고자 할 때

 

 

작은 것을 맨 앞으로, 순차적으로 정렬하고자 할 때

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

 

 

 

역순으로(큰 것을 맨 앞으로) 정렬하고자 할 때

begin -> rbegin 으로 변경해주면 된다.

 

sort(a.rbegin(), a.rend());

 

 

정렬은 하지 않고,

단순히 현재 순서를 역순으로 변경하고자 할 때

reverse(a.begin(), a.end());

 

 

 

 

vector의 begin(), end() 는 시작과 끝을 가르키는 것으로

sort, reverse 에서 파라미터로 입력되는 부분은 범위를 지칭한다.

 

만약에 한 vector a 가 10개의 구성요소로 이뤄져있을 때,

맨 처음부터 절반만 sort 하고 싶은 경우

sort(a.begin(), a.begin()+5) 이렇게 범위를 지정해주면 된다.

 

#include <algorithm>
#include <vector>


int test(vector<int> a)
{
	// a 가 { 1, 3, 2 } 인 경우,

	sort(a.begin(), a.end());
	// 위 로직후, a 의 결과
	// { 1, 2, 3 }


	sort(a.rbegin(), a.rend());
	// 위 로직후, a 의 결과
	// { 3, 2, 1 }


	reverse(a.begin(), a.end());
	// 위 로직후, a 의 결과
	// { 1, 2, 3 }
    
}

+ Recent posts