C++ 동일 원소 포함 여부 확인 is_permutation

Notepad96

·

2020. 11. 14. 04:41

300x250

 

 

 

 

1. is_permutation

 

Permutation이란 순열이라는 뜻으로 이전 순열을 구하기 위하여 next_permutation을 사용하였었다.

 

 

C++ 순열(Permutation) - next_permutation

  1. 순열(Permutation) 순열은 순서에 상관있게 값들을 나열하는 것을 의미한다. C++ 에서는 algorithm 라이브러리의 next_permutation을 사용한다면 간단하게 구해낼 수 있다. next_permutation은 인자로 반복..

notepad96.tistory.com

 

마찬가지로 is_permutationalgorithm 라이브러리의 포함되어 있으며 순열인지를 검사하는 것이다.

 

순열인지 검사를 한다는 것은 단지 순서만 바뀐 동일한 구성인지 즉, 동일한 원소들을 포함하고 있는지를 검사한다.

 

 


2. 코 드

환경 : Visual studio 2019
 
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

int main() {
    vector<int> v;
    v.push_back(3);
    v.push_back(4);
    v.push_back(5);
    v.push_back(2);
    v.push_back(5);

    vector<int> v2 = { 5, 5, 2, 3, 4, 7, 6};
   
    cout << "vector1 : ";
    for (int i : v) cout << i << " ";
    cout << "\n";

    cout << "vector2 : ";
    for (int i : v2) cout << i << " ";
    cout << "\n";

    if (is_permutation(v.begin(), v.end(), v2.begin())) {
        cout << "동일한 원소들을 가졌습니다.\n";
    }
    else {
        cout << "동일하지 않는 원소들을 가졌습니다.\n\n";
    }

    return 0;
}
 
결과

 

- is_permutation은 인자로서 (시작 반복자, 종료 반복자, 비교할 시작 반복자) 를 받는다.

 vector1은 2 3 4 5 5
 vector2은 2 3 4 5 5 6 7
 
로 각각 원소를 갖는다.
 
 
 
 
여기서 비교할 컨테이너는 종료 반복자 없이 시작 반복자만을 받는데 이는 1 ~ 2번 째로 받은 인수의 길이만큼 반복하여 비교하기 때문이다.
 
 
 
따라서 위 결과를 확인하면 vector1는 5개 vector2는 7개의 원소를 갖음에도 동일한 원소를 갖는다는 결과를 얻는다.
 
 
 
 
또한, 중복된 원소가 존재하여도 해당 원소의 개수 또한 동일해야만 true를 반환한다.
 
 
 
즉, 순서만을 바꾸었을 때 동일해 질 수 있다면 true 그렇지 않다면 false 이다.
 
 
 
 


3. 참 조

 
 

is_permutation - C++ Reference

function template std::is_permutation equality (1)template bool is_permutation (ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2); predicate (2)template bool is_permutation (ForwardIterator1 first1, ForwardIterator1 last

www.cplusplus.com

 

 

300x250

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

C++ 값 교환하기 Swap  (0) 2020.11.14
C++ vector 범위 초기화 Copy  (0) 2020.11.14
C++ 일련하는 원소 찾기 Search  (0) 2020.11.13
C++ 원소 개수 구하기 Count  (0) 2020.11.13
C++ Vector 값 탐색 find - 존재 유무 확인  (0) 2020.11.12