lower_bound() Yöntemi nedir?
C++'daki lower_bound() yöntemi, sıralanmış bir kapta belirli bir değerin ilk geçtiği yeri bulur. C++'daki
Sözdizimi
C++'daki lower_bound() yönteminin iki çeşidi vardır: bir varsayılan ve bir özel sözdizimi.
Varsayılan Sözdizimi
Varsayılan sözdizimi, sırasıyla aranacak aralıktaki ilk ve son öğeleri işaret eden bir ForwardIterator ve aralıktaki öğeleri karşılaştırmak için bir değer alır.
ForwardIterator lower_bound ( Önce ForwardIterator , ForwardIterator son , sabit T & val ) ;
Özel Sözdizimi
Özel sözdizimi ayrıca, öğeleri sıralamak için katı zayıf sıralamayı izleyen, kullanıcı tanımlı bir ikili yüklem işlevi alır.
ForwardIterator lower_bound ( Önce ForwardIterator , ForwardIterator son , sabit T & val , Karşılaştırın ) ;
parametreler
C++'daki lower_bound() yöntemi üç parametre alır.
İlk son: İlk iki parametre, 'birinci' ve 'son', yöntemin alt sınırı aradığı aralığı [ilk, son) belirler. Aralık, “ilk” ve “son” olmak üzere iki parametre ile belirtilir. Aralık, 'ilk' ve 'son' yineleyiciler arasındaki tüm öğeleri içerir ancak 'son' yineleyici tarafından işaret edilen öğeyi hariç tutar.
val: lower_bound() yönteminin üçüncü parametresi “val” olarak anılır. Belirtilen aralık içinde bulunması gereken alt sınırın değerini temsil eder. lower_bound() yöntemi çağrıldığında, bir kapsayıcının belirtilen aralığında verilen 'val' değerinden büyük veya ona eşit olan ilk öğeyi arar.
kompozisyon: lower_bound() yöntemi, dördüncü parametresi olarak bir ikili karşılaştırma işlevini de kabul edebilir. İki bağımsız değişken alır: ForwardIterator ve ikincisi val . İşlev daha sonra iki bağımsız değişken arasındaki karşılaştırmaya dayalı olarak bir Boole değeri döndürür. comp bağımsız değişkeni, bağımsız değişkenlerinden hiçbirini değiştirmez ve yalnızca bir işlev işaretçisi veya bir işlev nesnesi olabilir.
Geri dönüş değeri
lower_bound(), şu değerden büyük veya ona eşit olan ilk öğeye işaret eden bir yineleyici döndürür: val . Bir kapsayıcının belirtilen aralığındaki tüm öğeler verilen değerden küçükse val , lower_bound() yöntemi, aralıktaki son öğeyi işaret eden bir yineleyici döndürür ve tüm öğeler şundan büyükse: val , aralıktaki ilk öğeye işaret eden bir yineleyici verir.
Örnek Kod
Bu C++ kodu, belirli bir değerden küçük olmayan sıralanmış bir vektördeki ilk öğeyi bulmak için std::lower_bound() işlevinin kullanımını gösterir.
#includeint ana ( )
{
// Giriş vektörü
std :: vektör < çift > değerler { 10 , on beş , yirmi , 25 , 30 } ;
// Vektörü yazdır
std :: cout << 'Vektör şunları içerir:' ;
için ( imzasız int Ben = 0 ; Ben < değerler. boyut ( ) ; Ben ++ )
std :: cout << ' ' << değerler [ Ben ] ;
std :: cout << ' \N ' ;
std :: vektör < çift >:: yineleyici o1 , it2 , it3 ;
// std :: alt sınır
o1 = std :: alt sınır ( değerler. başlamak ( ) , değerler. son ( ) , 13 ) ;
it2 = std :: alt sınır ( değerler. başlamak ( ) , değerler. son ( ) , 23 ) ;
it3 = std :: alt sınır ( değerler. başlamak ( ) , değerler. son ( ) , 33 ) ;
std :: cout
<< ' \N 13. öğe için lower_bound şu konumda: '
<< ( o1 - değerler. başlamak ( ) ) ;
std :: cout
<< ' \N 23. öğe için şu konumdaki lower_bound: '
<< ( it2 - değerler. başlamak ( ) ) ;
std :: cout
<< ' \N 33. öğe için lower_bound şu konumda: '
<< ( it3 - değerler. başlamak ( ) ) ;
geri dönmek 0 ;
}
Kod, çift adlandırılmış değerler türünde bir std::vector tanımlayarak ve onu bazı değerlerle başlatarak başlar. Daha sonra bir for döngüsü kullanarak vektörün öğelerini yazdırır.
Ardından, kod it1, it2 ve it3 adlı üç std::vector
std::lower_bound() işlevi üç farklı değerle çağrılır: 13, 23 ve 33. Her çağrıda lower_bound(), vektördeki şu değerden büyük veya ona eşit olan ilk öğeye işaret eden bir yineleyici verir: belirlenmiş değer.
Daha sonra kod, vector'deki öğenin dizinini veren std::lower_bound() tarafından döndürülen yineleyiciden Values.begin() yineleyicisini çıkararak vektördeki bu öğelerin konumlarını yazdırır.
Çıktı
Çözüm
C++'daki lower_bound() yöntemi, sıralanmış bir kapta belirli bir değerin ilk geçtiği yeri bulur. C++'daki