💡 퀵 접속: cpp.kr/includes
C++ 표준 라이브러리의 알고리즘으로, 정렬된 범위가 다른 정렬된 범위의 모든 요소를 포함하는지 확인합니다. 첫 번째 범위가 두 번째 범위의 모든 요소를 포함하면 true를, 그렇지 않으면 false를 반환합니다.
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> v2 = {2, 4, 6, 8};
// v1이 v2의 모든 요소를 포함하는지 확인
bool result = std::includes(v1.begin(), v1.end(),
v2.begin(), v2.end());
std::cout << "v1이 v2의 모든 요소를 포함하는가? "
<< (result ? "예" : "아니오") << std::endl;
// 다른 예시
std::vector<int> v3 = {2, 4, 6, 8, 10, 12};
result = std::includes(v1.begin(), v1.end(),
v3.begin(), v3.end());
std::cout << "v1이 v3의 모든 요소를 포함하는가? "
<< (result ? "예" : "아니오") << std::endl;
return 0;
}
실행 결과:
v1이 v2의 모든 요소를 포함하는가? 예 v1이 v3의 모든 요소를 포함하는가? 아니오
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v1 = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
std::vector<int> v2 = {8, 6, 4, 2};
// 내림차순으로 정렬된 벡터에서 포함 관계 확인
bool result = std::includes(v1.begin(), v1.end(),
v2.begin(), v2.end(),
std::greater<int>());
std::cout << "v1이 v2의 모든 요소를 포함하는가? "
<< (result ? "예" : "아니오") << std::endl;
return 0;
}
실행 결과:
v1이 v2의 모든 요소를 포함하는가? 예
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
struct Person {
std::string name;
int age;
bool operator<(const Person& other) const {
return age < other.age;
}
};
int main() {
std::vector<Person> group1 = {
{"Alice", 20},
{"Bob", 25},
{"Charlie", 30},
{"David", 35},
{"Eve", 40}
};
std::vector<Person> group2 = {
{"Bob", 25},
{"David", 35}
};
// group1이 group2의 모든 요소를 포함하는지 확인
bool result = std::includes(group1.begin(), group1.end(),
group2.begin(), group2.end());
std::cout << "group1이 group2의 모든 요소를 포함하는가? "
<< (result ? "예" : "아니오") << std::endl;
return 0;
}
실행 결과:
group1이 group2의 모든 요소를 포함하는가? 예
| 함수 | 설명 |
|---|---|
| includes(first1, last1, first2, last2) | 기본 비교 연산자를 사용하여 포함 관계 확인 |
| includes(first1, last1, first2, last2, comp) | 커스텀 비교 함수를 사용하여 포함 관계 확인 |