0comments

lower_bound 예제

다음 예제에서는 std:::algorithm::lower_bound() 함수의 사용을 보여 주며 있습니다. 다음은 std::algorithm::lower_bound() 함수 양식 std:::algorithm 헤더에 대한 선언입니다. 구문 1: 전달기 하위_바운드(포워드 이터레이터 먼저, 포워드 이터레이터 라스트, const T&val); 구문 2: 전달기 하위_바운드(포워드이터 먼저, 포워드이터 라스트, 콘스트 T&val, 비교 구성표); 먼저, 마지막 사용된 범위는 [첫 번째, 마지막)이며, 첫 번째요소와 마지막 사이의 모든 요소가 포함되며, 여기에는 먼저 가리키는 요소가 포함되지만 마지막이 가리키는 요소는 포함되지 않습니다. C++ 함수 std:::algorithm::lower_bound()는 주어진 값보다 적은 첫 번째 요소를 찾습니다. 이 함수는 정렬된 순서로 요소를 제외합니다. 비교를 위해 이진 함수를 사용합니다. 첫 번째 버전은 operator<를 사용하여 요소를 비교하고 두 번째 버전은 지정된 비교 함수 구성 요소를 사용합니다. [첫 번째, 마지막) 범위는 식 요소 <값 또는 comp(요소, 값)에 대해 분할된 것, 즉 적어도 부분적으로 정렬되어야 합니다. 완전히 정렬된 범위는 이 기준을 충족하며, 호출에서 std::p artition에 이르는 범위도 마찬가지입니다.

다음 동작 변경 결함 보고서는 이전에 게시된 C++ 표준에 소급 적용되었습니다. 수행된 비교 수는 첫 번째와 마지막 사이의 거리에서 로그학입니다(대부분의 log2(마지막 – 첫 번째) + O(1) 비교). 그러나 레거시가 아닌 임의액세스이터의 경우 이터레이터 증분 수가 선형입니다. 유효하지 않은 매개 변수는 정의되지 않은 동작을 일으킵니다. . comp – 두 인수를 받아 들이고 bool을 반환하는 바이너리 함수. . [첫 번째, 마지막) 범위는 식 요소 <값 또는 comp(요소, 값)에 대해 분할되어야 합니다. 완전히 정렬된 범위는 이 기준을 충족합니다. (즉, 크거나 같음) 값보다 크거나 같거나 마지막인 범위 [첫 번째, 마지막]의 첫 번째 요소를 가리키는 이터레이터를 반환하거나 이러한 요소가 발견되지 않은 경우 마지막을 가리킵니다.

val: 범위에서 검색할 하한의 값입니다. 이진 함수 또는 이거식 함수의 작업이 예외를 throw하는 경우 예외를 throw합니다. comp: 두 인수(ForwardIterator가 가리키는 형식의 첫 번째 함수와 두 번째 는 항상 val)를 받아들이고 bool로 변환가능한 값을 반환하는 이진 함수입니다. 함수는 인수를 수정할 수 없습니다. 함수 포인터 또는 함수 개체일 수 있습니다. 반환 유형 : 범위의 val 하한에 대한 이터레이터입니다. 범위의 모든 요소가 val보다 적게 비교되면 함수가 마지막으로 반환됩니다. 우리가 컴파일하고 위의 프로그램을 실행하자,이 다음과 같은 결과를 생성합니다 – val보다 적은 비교하지 않는 범위 [첫 번째, 마지막]의 첫 번째 요소를 가리키는 이터레이터를 반환합니다. 범위의 요소는 이미 정렬되거나 val과 관련하여 적어도 분할되어야 합니다.

Comments are closed.