Что такое метод lower_Bound() в C++

Cto Takoe Metod Lower Bound V C



Язык программирования C++ предлагает широкий набор широко используемых функций и методов. Метод lower_bound() — одна из таких функций, которая используется для поиска первого вхождения заданного значения в отсортированном контейнере. В этой статье рассматриваются синтаксис, параметры, возвращаемые значения и пример кода для метода lower_bound() в C++.

Что такое метод lower_bound()?

Метод lower_bound() в C++ находит первое вхождение заданного значения в отсортированном контейнере. Он является частью библиотеки в C++ и используется для выполнения двоичного поиска в массивах, векторах и других отсортированных контейнерах. Метод lower_bound() возвращает итератор, указывающий на первый элемент в указанном диапазоне контейнера, который не меньше предоставленного значения.

Синтаксис







Метод lower_bound() в C++ имеет два варианта: синтаксис по умолчанию и собственный синтаксис.



Синтаксис по умолчанию

Синтаксис по умолчанию принимает ForwardIterator, указывающий на первый и последний элементы в диапазоне для поиска, соответственно, и значение для сравнения элементов в диапазоне.



Форвардитератор нижняя граница ( Сначала впередитератор , Форвардитератор последний , константа Т & вал ) ;

Пользовательский синтаксис

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





Форвардитератор нижняя граница ( Сначала впередитератор , Форвардитератор последний , константа Т & вал , Сравнить комп ) ;

Параметры

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

Первый Последний: Первые два параметра, «первый» и «последний», определяют диапазон [first, last), в пределах которого метод ищет нижнюю границу. Диапазон определяется двумя параметрами, а именно «первый» и «последний». Диапазон включает все элементы между «первым» и «последним» итераторами, но исключает элемент, на который указывает «последний» итератор.



значение: Третий параметр метода lower_bound() называется «val». Он представляет собой значение нижней границы, которое необходимо найти в указанном диапазоне. Когда вызывается метод lower_bound(), он ищет первый элемент в указанном диапазоне контейнера, который больше или равен заданному значению «val».

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

Возвращаемое значение

Функция lower_bound() возвращает итератор, указывающий на первый элемент, который больше или равен вал . Если все элементы в указанном диапазоне контейнера меньше заданного значения вал , метод lower_bound() возвращает итератор, указывающий на последний элемент в диапазоне, и если все элементы больше вал , он дает итератор, указывающий на первый элемент в диапазоне.

Пример кода

Этот код C++ демонстрирует использование функции std::lower_bound() для поиска первого элемента в отсортированном векторе, который не меньше заданного значения.

#include <бит/stdc++.h>

инт основной ( )

{

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

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

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

станд. :: cout << 'Вектор содержит:' ;

для ( неподписанный инт я '=' 0 ; я < ценности. размер ( ) ; я ++ )

станд. :: cout << ' ' << ценности [ я ] ;

станд. :: cout << ' \n ' ;

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

// станд.::нижняя граница

это1 '=' станд. :: нижняя граница ( ценности. начинать ( ) , ценности. конец ( ) , 13 ) ;

это2 '=' станд. :: нижняя граница ( ценности. начинать ( ) , ценности. конец ( ) , 23 ) ;

это3 '=' станд. :: нижняя граница ( ценности. начинать ( ) , ценности. конец ( ) , 33 ) ;

станд. :: cout

<< ' \n lower_bound для элемента 13 в позиции: '

<< ( это1 - ценности. начинать ( ) ) ;

станд. :: cout

<< ' \n lower_bound для элемента 23 в позиции: '

<< ( это2 - ценности. начинать ( ) ) ;

станд. :: cout

<< ' \n lower_bound для элемента 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() читайте в этой статье.