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 }
}
'코딩테스트' 카테고리의 다른 글
C++ 십진수를 이진수로 변환했을 때, 1의 개수 구하기 (0) | 2022.09.27 |
---|---|
C++ 어느 자연수가 주어졌을 때, 연속된 자연수 합과 일치하는 숫자 (1) | 2022.09.23 |
C++ 최대공약수, 최소공배수 구하는 로직 (0) | 2022.09.22 |
C++ vector 초기화 방법 및 2차원 vector 행렬 덧셈 로직 (0) | 2022.09.20 |
C++ 약수 개수를 구하는 로직 (0) | 2022.09.19 |