bsearch

bsearch (정렬된 배열에서 이진 탐색)

정렬된 배열에서 키와 일치하는 원소를 이진 탐색으로 찾아 그 포인터를 반환하는 C 스타일 함수예요. <cstdlib> 헤더에 있어요.

출처: cppreference

본문

bsearchptr이 가리키는 배열(원소 개수 count, 원소 크기 size)에서 key가 가리키는 키와 일치하는 원소를 찾아요.

void* bsearch( const void* key, const void* ptr, std::size_t count,
               std::size_t size, /* c-compare-pred */* comp );

비교 함수 compkey와 배열 원소를 비교해요.

  • comp(a, b) < 0: ab보다 작음.
  • comp(a, b) > 0: ab보다 큼.
  • comp(a, b) == 0: 같음.

배열은 반드시 비교 함수 기준으로 정렬되어 있어야 해요.

  • 매개변수: key(찾을 키 포인터), ptr(배열 시작), count(원소 수), size(원소 크기 바이트), comp(비교 함수).
  • 반환 값: 일치하는 원소를 가리키는 포인터. 없으면 널 포인터.

일치하는 원소가 여러 개면 그중 어떤 것이 반환될지는 명시되어 있지 않아요. C++26부터는 비교 함수가 extern "C" 연결 규약을 써야 하는 제약이 완화됐어요(요구사항 참고).

C++ 템플릿 기반 코드에서는 std::binary_searchstd::lower_bound가 타입 안전해서 더 선호돼요. bsearch는 C 호환용 함수로, 배열이 정렬돼 있을 때 사용해요.

더 알아보기 (Learn more)

cppreference