Какво представлява методът lower_bound()?
Методът lower_bound() в C++ намира първото срещане на дадена стойност в сортиран контейнер. Той е част от библиотеката
Синтаксис
Методът 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
Функцията std::lower_bound() се извиква с три различни стойности: 13, 23 и 33. При всяко извикване, lower_bound() дава итератор, който сочи към първия елемент във вектора, който е по-голям или равен на определена стойност.
След това кодът отпечатва позициите на тези елементи във вектора чрез изваждане на итератора values.begin() от итератора, върнат от std::lower_bound(), което дава индекса на елемента във вектора.
Изход
Заключение
Методът lower_bound() в C++ намира първото срещане на дадена стойност в сортиран контейнер. Той е част от библиотеката