bsearch
bsearch (정렬된 배열에서 이진 탐색)
정렬된 배열에서 키와 일치하는 원소를 이진 탐색으로 찾아 그 포인터를 반환하는 C 스타일 함수예요. <cstdlib> 헤더에 있어요.
출처: cppreference
본문
bsearch는 ptr이 가리키는 배열(원소 개수 count, 원소 크기 size)에서 key가 가리키는 키와 일치하는 원소를 찾아요.
void* bsearch( const void* key, const void* ptr, std::size_t count,
std::size_t size, /* c-compare-pred */* comp );
비교 함수 comp는 key와 배열 원소를 비교해요.
comp(a, b) < 0:a가b보다 작음.comp(a, b) > 0:a가b보다 큼.comp(a, b) == 0: 같음.
배열은 반드시 비교 함수 기준으로 정렬되어 있어야 해요.
- 매개변수:
key(찾을 키 포인터),ptr(배열 시작),count(원소 수),size(원소 크기 바이트),comp(비교 함수). - 반환 값: 일치하는 원소를 가리키는 포인터. 없으면 널 포인터.
일치하는 원소가 여러 개면 그중 어떤 것이 반환될지는 명시되어 있지 않아요. C++26부터는 비교 함수가 extern "C" 연결 규약을 써야 하는 제약이 완화됐어요(요구사항 참고).
C++ 템플릿 기반 코드에서는 std::binary_search나 std::lower_bound가 타입 안전해서 더 선호돼요. bsearch는 C 호환용 함수로, 배열이 정렬돼 있을 때 사용해요.