C++에서 Upper_bound() 함수를 사용하는 방법

C Eseo Upper Bound Hamsuleul Sayonghaneun Bangbeob



C++ 프로그래밍 언어를 사용하여 게임, 그래픽, 웹 서버 등 다양한 프로그램을 만들 수 있습니다. 그러나 때로는 검색, 정렬, 요소 범위 중에서 최대값이나 최소값 찾기 등 프로그램의 데이터에 대해 일부 작업을 수행해야 할 수도 있습니다. 정렬된 요소 범위에서 값의 상한을 찾는 데 사용할 수 있는 함수 중 하나는 upper_bound()입니다.

C++의 upper_bound() 함수란 무엇입니까?

C++의 upper_bound() 함수는 정렬된 범위의 요소와 값을 인수로 사용하고 해당 값보다 큰 범위의 첫 번째 요소를 가리키는 반복자를 반환하는 함수입니다.







여기에는 두 가지 유형의 인수가 있습니다.



상한 개수 ( 하나에. 첫 번째 , 하나에. 마지막 , 값 )

검사할 요소의 범위를 지정하는 반복자는 첫 번째와 마지막입니다. 활용되는 간격에는 첫 번째 요소부터 끝까지 모든 요소가 포함되지만 마지막에 표시된 요소는 포함되지 않습니다. 값은 요소를 비교할 값입니다.



상한 개수 ( 하나에. 첫 번째 , 하나에. 마지막 ,  값, 비교 비교 )

이 경우 이진 함수 comp는 bool로 변환될 수 있는 값을 생성하고 범위 항목과 동일한 유형의 두 매개 변수를 허용합니다. 특정 조건에 따라 첫 번째 인수가 두 번째 인수보다 높지 않은 경우 함수는 true 결과를 반환해야 하고, 그렇지 않은 경우 false를 반환해야 합니다.





C++에서 upper_bound() 함수를 사용하는 방법

upper_bound() 함수는 다양한 상황에서 정렬된 요소 범위에서 값의 상한을 찾는 데 사용할 수 있습니다. 예를 들어, 정렬된 배열이나 벡터에서 요소의 위치를 ​​찾거나 집합이나 맵에서 다음으로 큰 요소를 찾는 데 사용할 수 있습니다. 다음은 C++에서 upper_bound() 함수를 사용하는 방법에 대한 몇 가지 예입니다.

예제 1: upper_bound() 함수를 사용하여 정렬된 배열에서 요소의 위치 찾기

다음은 upper_bound() 함수를 사용하여 정렬된 정수 배열에서 요소의 위치를 ​​찾아 화면에 표시하는 예입니다.



#include

#include

사용하여 네임스페이스 성병 ;

정수 기본 ( )

{

정수 정렬 [ ] = { 열 다섯 , 35 , 넷 다섯 , 55 , 65 } ;

정수 = 크기 ( 정렬 ) / 크기 ( 정렬 [ 0 ] ) ;

시합 << '배열에는 다음이 포함됩니다: ' ;

~을 위한 ( 정수 = 0 ; < ; ++ )

시합 << 정렬 [ ] << ' ' ;

시합 << ' \N ' ;

정수 = 넷 다섯 ; // 값을 선언하고 초기화합니다.

정수 * = 상한 ( 배열, 배열 + 에, 비 ) ;

시합 << '의 상한' << << '는 다음 위치에 있습니다: ' << ( - 정렬 ) << ' \N ' ; // 포인터 연산을 사용하여 위치를 표시합니다.

반품 0 ;

}

먼저 프로그램은 필요한 헤더 파일과 숫자가 포함된 배열을 정의한 다음 sizeof() 함수를 사용하여 배열의 크기를 가져옵니다. 다음으로 for 루프를 사용하여 배열의 요소를 표시한 다음 포인터를 사용하여 배열의 위치를 ​​결정하고 출력에 표시하는 정수를 선언합니다.

예 2: upper_bound() 함수를 사용하여 집합에서 다음으로 큰 요소 찾기

다음은 upper_bound() 함수를 사용하여 정수 집합에서 주어진 값보다 다음으로 큰 요소를 찾아 화면에 표시하는 예제 코드입니다.

#include

#include

#include <벡터>

사용하여 네임스페이스 성병 ;

정수 기본 ( )

{

세트 < 정수 > 하나에 = { 열 다섯 , 25 , 35 , 넷 다섯 , 55 } ; // 정수 집합을 선언하고 초기화합니다.

시합 << '주어진 숫자: ' ;

~을 위한 ( 자동 : 하나에 ) // 범위 기반 for 루프를 사용하여 설정된 요소를 표시합니다.

시합 << << ' ' ;

시합 << ' \N ' ;

정수 = 넷 다섯 ; // 값을 선언하고 초기화합니다.

자동 그것 = 상한 ( 하나에. 시작하다 ( ) , 하나에. ( ) , ㅏ ) ; // upper_bound()를 사용하여 집합에서 x의 상한을 찾습니다.

만약에 ( 그것 ! = 하나에. ( ) ) // 반복자가 유효한지 확인

시합 << '다음보다 높은 숫자' << << ' 이다 ' << * 그것 << ' \N ' ; // 역참조 연산자를 사용하여 요소를 표시합니다.

또 다른

시합 << '보다 높은 숫자는 없습니다' << << ' \N ' ; // 해당 요소가 없으면 메시지를 표시합니다.

반품 0 ;

}

먼저 코드는 필요한 헤더 파일을 정의한 다음 5개 요소의 벡터를 정의합니다. 다음으로 요소의 데이터 유형을 자동으로 설정할 수 있는 auto 키워드를 사용하여 벡터가 표시됩니다. 다음으로 값이 45인 변수가 선언되고 upper_bound() 함수를 사용하여 정의된 벡터와 비교된 후 비교 결과가 표시됩니다.

결론

upper_bound() 함수는 정렬된 범위에서 주어진 값보다 큰 첫 번째 요소를 가리키는 반복자를 반환하는 함수입니다. 지정된 숫자보다 크거나 같은 간격에서 첫 번째 숫자를 찾으려면 C++에서 upper_bound() 함수를 사용하세요. 이는 목록에서 다음으로 높은 숫자를 찾거나 정렬된 배열에서 지정된 임계값보다 큰 첫 번째 요소를 찾는 등의 작업에 유용할 수 있습니다.