Какво представлява методът lower_Bound() в C++

Kakvo Predstavlava Metod T Lower Bound V C



Езикът за програмиране C++ предлага широк набор от функции и методи, които се използват широко. Методът lower_bound() е една такава функция, която се използва за намиране на първото срещане на дадена стойност в сортиран контейнер. Тази статия обхваща синтаксиса, параметрите, връщаните стойности и примерен код за метода lower_bound() в C++.

Какво представлява методът lower_bound()?

Методът lower_bound() в C++ намира първото срещане на дадена стойност в сортиран контейнер. Той е част от библиотеката в C++ и се използва за извършване на двоично търсене на масиви, вектори и други сортирани контейнери. Методът lower_bound() връща итератор, който сочи към първия елемент в определен диапазон на контейнер, който не е по-малък от предоставената стойност.

Синтаксис







Методът lower_bound() в C++ има два варианта: стандартен и потребителски синтаксис.



Синтаксис по подразбиране

Синтаксисът по подразбиране приема ForwardIterator, сочещ съответно към първия и след последния елементи в диапазона, в който се търси, и стойност за сравняване на елементите в диапазона.



ForwardIterator долна_граница ( Първо ForwardIterator , ForwardIterator последен , конст T и вал ) ;

Персонализиран синтаксис

Персонализираният синтаксис допълнително приема дефинирана от потребителя двоична предикатна функция, която следва строго слабо подреждане, за да подреди елементите.





ForwardIterator долна_граница ( Първо ForwardIterator , ForwardIterator последен , конст T и вал , Сравнете комп ) ;

Параметри

Методът lower_bound() в C++ приема три параметъра.

Първи последен: Първите два параметъра, „първи“ и „последен“, определят диапазона [първи, последен), в рамките на който методът търси долната граница. Диапазонът се определя от два параметъра, а именно „първи“ и „последен“. Диапазонът включва всички елементи между „първия“ и „последния“ итератор, но изключва елемента, посочен от „последния“ итератор.



стойност: Третият параметър на метода lower_bound() се нарича „val“. Той представлява стойността на долната граница, която трябва да бъде намерена в посочения диапазон. Когато се извика методът lower_bound(), той търси първия елемент в рамките на указания диапазон на контейнер, който е по-голям или равен на дадената стойност „val“.

комп: Методът lower_bound() може също да приеме функция за двоично сравнение като свой четвърти параметър. Необходими са два аргумента: Типът, посочен от ForwardIterator , а второто е вал . След това функцията връща булева стойност въз основа на сравнение между двата аргумента. Аргументът comp не променя нито един от своите аргументи и може да бъде само указател на функция или обект на функция.

Върната стойност

Lower_bound() връща итератор, който сочи към първия елемент, който е по-голям или равен на вал . Ако всички елементи в посочения диапазон на контейнер са по-малки от дадената стойност вал , методът lower_bound() връща итератор, сочещ към последния елемент в диапазона и ако всички елементи са по-големи от вал , дава итератор, който сочи към първия елемент в диапазона.

Примерен код

Този C++ код демонстрира използването на функцията std::lower_bound() за намиране на първия елемент в сортиран вектор, който е не по-малък от дадена стойност.

#include

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

{

// Входен вектор

std :: вектор < двойно > стойности { 10 , петнадесет , двадесет , 25 , 30 } ;

// Печат на вектор

std :: cout << „Векторът съдържа:“ ;

за ( неподписан вътр i = 0 ; i < стойности. размер ( ) ; i ++ )

std :: cout << ' ' << стойности [ i ] ;

std :: cout << ' ' ;

std :: вектор < двойно >:: итератор то1 , то2 , то3 ;

// std :: долна_граница

то1 = std :: долна_граница ( стойности. започвам ( ) , стойности. край ( ) , 13 ) ;

то2 = std :: долна_граница ( стойности. започвам ( ) , стойности. край ( ) , 23 ) ;

то3 = std :: долна_граница ( стойности. започвам ( ) , стойности. край ( ) , 33 ) ;

std :: cout

<< ' долна граница за елемент 13 на позиция: '

<< ( то1 - стойности. започвам ( ) ) ;

std :: cout

<< ' долна_граница за елемент 23 на позиция: '

<< ( то2 - стойности. започвам ( ) ) ;

std :: cout

<< ' долна граница за елемент 33 на позиция: '

<< ( то3 - стойности. започвам ( ) ) ;

връщане 0 ;

}

Кодът започва с дефиниране на std::vector от тип двойно именувани стойности и инициализиране с някои стойности. След това отпечатва елементите на вектора с помощта на for цикъл.

След това кодът декларира три променливи std::vector::iterator, наречени it1, it2 и it3. Тези променливи ще се използват за съхраняване на резултатите от извикването на std::lower_bound() на вектора на стойностите с различни аргументи.

Функцията std::lower_bound() се извиква с три различни стойности: 13, 23 и 33. При всяко извикване, lower_bound() дава итератор, който сочи към първия елемент във вектора, който е по-голям или равен на определена стойност.

След това кодът отпечатва позициите на тези елементи във вектора чрез изваждане на итератора values.begin() от итератора, върнат от std::lower_bound(), което дава индекса на елемента във вектора.

Изход

Заключение

Методът lower_bound() в C++ намира първото срещане на дадена стойност в сортиран контейнер. Той е част от библиотеката в C++ и може да се използва за извършване на двоично търсене на масиви, вектори и други сортирани контейнери. Методът дава итератор, който сочи към първия елемент в диапазон, който не е по-малък от дадената стойност. Прочетете повече за метода lower_bound() в тази статия.