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