Как да използвате функцията Upper_bound() в C++

Kak Da Izpolzvate Funkciata Upper Bound V C



Разнообразие от програми, включително игри, графики, уеб сървъри и други, могат да бъдат направени с помощта на езика за програмиране C++. Понякога обаче може да се наложи да извършим някои операции върху данните в нашите програми, като търсене, сортиране или намиране на максимална или минимална стойност сред набор от елементи. Една от функциите, които могат да се използват за намиране на горната граница на стойност в сортиран диапазон от елементи, е upper_bound().

Какво представлява функцията upper_bound() в C++

Функцията upper_bound() в C++ е функция, която приема сортиран диапазон от елементи и стойност като аргументи и връща итератор, сочещ към първия елемент в диапазона, който е по-голям от стойността.







Има два различни типа аргументи:



брой горна_граница ( никой. първи , никой. последно , стойност )

Итераторите, които указват диапазона от елементи, които трябва да бъдат изследвани, са първи и последен. Използваният интервал съдържа всички елементи от първия елемент до края, но не включва елемента, посочен от последния. Стойността е стойността, с която да се сравняват елементите.



брой горна_граница ( никой. първи , никой. последно ,  стойност, сравнение комп )

В този случай двоичната функция comp произвежда стойност, която може да бъде преобразувана в bool и приема два параметъра от същия тип като елементите на диапазона. Ако определено условие налага първият аргумент да не е по-висок от втория, функцията трябва да върне верен резултат, а ако не, трябва да върне false.





Как да използвате функцията upper_bound() в C++

Функцията upper_bound() може да се използва за намиране на горната граница на стойност в сортиран диапазон от елементи в различни ситуации. Например, можем да го използваме, за да намерим позицията на елемент в сортиран масив или вектор или да намерим следващия по-голям елемент в набор или карта. Ето няколко примера как да използвате функцията upper_bound() в C++:

Пример 1: Използване на функцията upper_bound() за намиране на позицията на елемент в сортиран масив

Ето пример, който използва функцията upper_bound(), за да намери позицията на елемент в сортиран масив от цели числа и да го покаже на екрана:



#include

#include

използвайки пространство от имена std ;

вътр основен ( )

{

вътр масив [ ] = { петнадесет , 35 , Четири пет , 55 , 65 } ;

вътр а = размер на ( масив ) / размер на ( масив [ 0 ] ) ;

cout << 'Масивът съдържа: ' ;

за ( вътр аз = 0 ; аз < а ; аз ++ )

cout << масив [ аз ] << ' ' ;

cout << ' ' ;

вътр b = Четири пет ; // деклариране и инициализиране на стойност

вътр * стр = Горна граница ( масив, масив + а, б ) ;

cout << „Горна граница на“ << b << ' е на позиция: ' << ( стр - масив ) << ' ' ; // показване на позицията чрез аритметика на показалеца

връщане 0 ;

}

Първо програмата дефинира необходимите заглавни файлове и масив, съдържащ числа и след това използва функцията sizeof(), за да получи размера на масива. След това се използва for цикъл за показване на елементите на масива и след това се декларира цяло число, чиято позиция в масива се определя с помощта на указателя и се показва в изхода:

Пример 2: Използване на функцията upper_bound() за намиране на следващия по-голям елемент в набор

Ето примерен код, който използва функцията upper_bound(), за да намери следващия по-голям елемент от дадена стойност в набор от цели числа и да го покаже на екрана:

#include

#include

#include <вектор>

използвайки пространство от имена std ;

вътр основен ( )

{

комплект < вътр > никой = { петнадесет , 25 , 35 , Четири пет , 55 } ; // деклариране и инициализиране на набор от цели числа

cout << „Дадени числа:“ ;

за ( Автоматичен а : никой ) // показване на елементите на набора, използвайки базиран на диапазон for цикъл

cout << а << ' ' ;

cout << ' ' ;

вътр а = Четири пет ; // деклариране и инициализиране на стойност

Автоматичен то = Горна граница ( никой. започвам ( ) , никой. край ( ) , а ) ; // намиране на горната граница на x в набора с помощта на upper_bound()

ако ( то ! = никой. край ( ) ) // проверка дали итераторът е валиден

cout << „Следващото по-голямо число от“ << а << 'е' << * то << ' ' ; // показване на елемента чрез оператор за дереференция

друго

cout << 'Няма по-голямо число от ' << а << ' ' ; // показва съобщение, ако не бъде намерен такъв елемент

връщане 0 ;

}

Първо кодът дефинира необходимите заглавни файлове и след това се дефинира вектор от пет елемента, след което векторът се показва с помощта на ключовата дума auto, тъй като може автоматично да задава типа данни на елементите. След това се декларира променлива със стойност 45, която след това се сравнява с вектора, дефиниран с помощта на функцията upper_bound() и след това показва резултата от сравнението:

Заключение

Функцията upper_bound() е функция, която връща итератор, сочещ към първия елемент в сортиран диапазон, който е по-голям от дадена стойност. За да намерите първото число в интервал, който е по-голям или равен на определено число, използвайте функцията upper_bound() в C++. Това може да бъде полезно за задачи като намиране на следващото най-високо число в списък или намиране на първия елемент в сортиран масив, който е по-голям от даден праг.