Search
castle

image

1. next_permutation() 함수

std::next_permutation 함수는 C++ 표준 라이브러리에서 제공하는 함수로, 순열을 생성하거나 다음 순열로 변경하는 데 사용됩니다. 이 함수는 주어진 범위의 순열을 다음 순서의 순열로 변경합니다.

template <class BidirectionalIt>
bool next_permutation(BidirectionalIt first, BidirectionalIt last);

- first: 순열의 시작을 가리키는 반복자
- last: 순열의 끝을 가리키는 반복자

작동 과정

1. first와 last 사이의 범위에 있는 요소들의 순열을 다음 순서의 순열로 변경합니다.
2. 변경에 성공하면 true를 반환하고, 더 이상 다음 순열이 없으면 false를 반환합니다.
3. 변경된 순열은 first와 last 사이에 저장됩니다.

2. 사용 예시

#include <bits/stdc++.h>
using namespace std;

int main(){
    vector<int> example = {2, 1, 4};

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

    do{
        for (int i : example)
            cout << i << " ";
        cout << '\n';
    } while (next_permutation(example.begin(), example.end()));
}

vector<int> example = {2, 1, 4};
-> 벡터를 선언합니다.

sort(example.begin(), example.end());
-> 벡터를 순서에 맞게 정렬합니다.

> sort()
std::sort 함수는 [first, last) 범위에 있는 요소들을 정렬합니다.
( 범위는 [first, last)로 지정되어 있으므로 last는 실제로 정렬에 포함되지 않습니다. )

for (int i : example)
-> 벡터 example에서 하나씩 꺼내어 루프를 돌려줍니다.

while (next_permutation(example.begin(), example.end()))
-> 순서 변경에 성공하면, while문을 계속 수행하게 됩니다.

Result


image

left
right

C

Contents