>  기사  >  백엔드 개발  >  C에서 반복자를 반환하는 이진 검색 알고리즘을 구현하는 방법은 무엇입니까?

C에서 반복자를 반환하는 이진 검색 알고리즘을 구현하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 04:49:02570검색

How to Implement a Binary Search Algorithm That Returns an Iterator in C  ?

C에서 반복자를 반환하는 이진 검색 알고리즘

C에서 std::binary_search 알고리즘은 편리한 방법을 제공합니다. 정렬된 컨테이너에 대해 이진 검색을 수행합니다. 그러나 요소가 존재하는지 여부를 나타내는 부울만 반환하므로 일부 애플리케이션에는 충분하지 않을 수 있습니다.

반복자 반환 알고리즘에 대한 요구 사항

다음에 대한 필요성이 발생합니다. 부울 대신 결과를 가리키는 반복자를 반환하는 이진 검색 알고리즘입니다. 이를 통해 개발자는 발견된 실제 요소에 액세스하거나 해당 요소가 컨테이너에 존재하지 않는지 확인할 수 있습니다.

사용자 정의 이진 검색 알고리즘 구현

해당 기능이 없기 때문에 표준 라이브러리에서 사용할 수 있으므로 std::lower_bound, std::upper_bound 또는 std::equal_range와 같은 다른 STL 함수를 사용하여 사용자 정의 구현을 만들 수 있습니다. .

샘플 구현

다음은 std::lower_bound:

<code class="cpp">template<class Iter, class T>
Iter binary_find(Iter begin, Iter end, T val)
{
    // Finds the lower bound in at most log(last - first) + 1 comparisons
    Iter i = std::lower_bound(begin, end, val);

    if (i != end &amp;&amp; !(val < *i))
        return i; // found
    else
        return end; // not found
}</code>

또는 std::set 사용

또 다른 옵션은 정렬된 요소를 유지하고 지정된 항목에 대한 반복자를 반환하는 find(T 키) 메서드를 제공하는 std::set를 사용하는 것입니다. . 그러나 컨테이너에 동일한 요소의 여러 인스턴스가 필요한 경우 이 접근 방식은 적합하지 않을 수 있습니다.

위 내용은 C에서 반복자를 반환하는 이진 검색 알고리즘을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.