Photo by Nikhil Mitra on Unsplash

C++ std::includes() 뽀개기

brewmaster
newworld-kim
Published in
Nov 17, 2020

--

알고리즘 사이트에서 문제를 풀다 std::includes() 를 알게 되어 정리해본다.

std::include()<algorithm> 헤더에 있는 함수로써, 범위를 가지는 두 요소들 중 하나가 다른 하나에 완전히 속하는지 확인할 수 있는 함수다.

[1] = {1,2,3,4,5}
[2] = {2,3,4,5}

가령, 위와 같이 두 개의 배열이 있다고 생각해보자. [2] 배열의 원소는 [1] 배열의 원소들 중에서 모두 찾을 수 있다. 단순히, 하나의 원소 값을 포함하고 있는 것을 확인하는 것이 아니라 포함하고 있는 동일 원소의 수도 함께 확인해준다.

cplusplus.com 에서 제공하는 코드를 함께 보자.

include() 함수는 Template 인자로 InputIterator1와 InputIterator2 클래스를 입력 받는다. 함수인자로는 InputIterator1의 첫 원소인 first1과 끝 원소인 last1를 입력 받고, InputIterator2에 대해서도 동일하게 입력 받는다.

InputIterator1 전체 크기만큼 모두 탐색을 마치거나, first1의 원소가 first2 보다 큰 경우 false 를 리턴하고, 그렇지 않은 경우 true 를 리턴한다.

구현시 반드시 주의해야 되는 점은 입력 배열의 정렬(sorting)이 되어 있어야 한다는 것이다. Iterator는 증감연산자로 원소들을 탐색하는데 배열의 위치(index)를 이동하는 것이지 의미하는 값(value)과는 무관하다. 같은 헤더에 포함된 std::sort() 함수 등으로 정렬 후 사용하자.

std::includes() 를 사용한 예로, 입력 받은 두 문자열에 대한 포함 관계를 bool 타입으로 리턴하는 함수다.

--

--