C++ 동일 원소 포함 여부 확인 is_permutation
Notepad96
·2020. 11. 14. 04:41
300x250
1. is_permutation
Permutation이란 순열이라는 뜻으로 이전 순열을 구하기 위하여 next_permutation을 사용하였었다.
마찬가지로 is_permutation도 algorithm 라이브러리의 포함되어 있으며 순열인지를 검사하는 것이다.
순열인지 검사를 한다는 것은 단지 순서만 바뀐 동일한 구성인지 즉, 동일한 원소들을 포함하고 있는지를 검사한다.
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. 참 조
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 |