C++ の lower_Bound() メソッドとは何ですか

C No Lower Bound Mesoddotoha Hedesuka



C++ プログラミング言語は、広く使用されている幅広い関数とメソッドを提供します。 lower_bound() メソッドは、ソートされたコンテナー内で最初に出現した特定の値を見つけるために使用される関数の 1 つです。この記事では、C++ の lower_bound() メソッドの構文、パラメーター、戻り値、コード例について説明します。

lower_bound() メソッドとは何ですか?

C++ の lower_bound() メソッドは、ソートされたコンテナー内で指定された値の最初の出現を検索します。これは C++ の ライブラリの一部であり、配列、ベクトル、およびその他の並べ替えられたコンテナーに対してバイナリ検索を実行するために使用されます。 lower_bound() メソッドは、コンテナーの指定された範囲内の、指定された値以上の最初の要素を指す反復子を返します。

構文







C++ の lower_bound() メソッドには、デフォルト構文とカスタム構文の 2 つのバリエーションがあります。



デフォルトの構文

デフォルトの構文は、検索対象の範囲内の最初と最後の要素をそれぞれ指す ForwardIterator と、範囲内の要素を比較するための値を受け取ります。



ForwardIterator lower_bound ( 最初にForwardIterator ForwardIterator last 定数 T & ヴァル ) ;

カスタム構文

カスタム構文は、要素を順序付けるために厳密な弱い順序付けに従うユーザー定義のバイナリ述語関数をさらに取り込みます。





ForwardIterator lower_bound ( 最初にForwardIterator ForwardIterator last 定数 T & ヴァル 比較コンプ ) ;

パラメーター

C++ の lower_bound() メソッドは 3 つのパラメーターを取ります。

最初の最後: 最初の 2 つのパラメータ「first」と「last」は、メソッドが下限を検索する範囲 [first, last) を決定します。範囲は「first」と「last」の 2 つのパラメータで指定します。範囲には、「最初」の反復子と「最後の」反復子の間のすべての要素が含まれますが、「最後の」反復子が指す要素は除外されます。



値: lower_bound() メソッドの 3 番目のパラメーターは「val」と呼ばれます。これは、指定された範囲内で見つける必要がある下限の値を表します。 lower_bound() メソッドが呼び出されると、コンテナーの指定された範囲内で、指定された値「val」以上の最初の要素が検索されます。

コンプ: lower_bound() メソッドは、4 番目のパラメーターとしてバイナリ比較関数を受け入れることもできます。これは 2 つの引数を取ります。 ForwardIterator 、そして2番目は ヴァル 。次に、関数は 2 つの引数間の比較に基づいてブール値を返します。 comp 引数はその引数を一切変更せず、関数ポインターまたは関数オブジェクトのみにすることができます。

戻り値

lower_bound() は、その値以上の最初の要素を指す反復子を返します。 ヴァル 。コンテナの指定された範囲内のすべての要素が指定された値より小さい場合 ヴァル 、 lower_bound() メソッドは、範囲内の最後の要素を指す反復子を返します。また、すべての要素が次の値より大きい場合は、 ヴァル 、範囲内の最初の要素を指す反復子を与えます。

コード例

この C++ コードは、 std:: lower_bound() 関数を使用して、並べ替えられたベクトル内の指定された値以上の最初の要素を検索する方法を示しています。

#include

整数 主要 ( )

{

// 入力ベクトル

標準 :: ベクター < ダブル > 価値観 { 10 15 二十 25 30 } ;

// ベクターを印刷します

標準 :: コート << 「ベクターには以下が含まれます:」 ;

ために ( 署名されていない 整数 = 0 ; < 価値観。 サイズ ( ) ; ++ )

標準 :: コート << 「」 << 価値観 [ ;

標準 :: コート << \n ;

標準 :: ベクター < ダブル >:: イテレータ それ1 それ2 それ3 ;

// std :: lower_bound

それ1 = 標準 :: 下限 ( 価値観。 始める ( ) 価値観。 終わり ( ) 13 ) ;

それ2 = 標準 :: 下限 ( 価値観。 始める ( ) 価値観。 終わり ( ) 23 ) ;

それ3 = 標準 :: 下限 ( 価値観。 始める ( ) 価値観。 終わり ( ) 33 ) ;

標準 :: コート

<< \n 要素 13 の lower_bound 位置: '

<< ( それ1 - 価値観。 始める ( ) ) ;

標準 :: コート

<< \n 要素 23 の lower_bound 位置: '

<< ( それ2 - 価値観。 始める ( ) ) ;

標準 :: コート

<< \n 要素 33 の lower_bound 位置: '

<< ( それ3 - 価値観。 始める ( ) ) ;

戻る 0 ;

}

コードは、二重名前の値型の std::vector を定義し、それをいくつかの値で初期化することから始まります。次に、for ループを使用してベクトルの要素を出力します。

次に、コードは it1、it2、it3 という名前の 3 つの std::vector::iterator 変数を宣言します。これらの変数は、さまざまな引数を使用して値ベクトルに対して std:: lower_bound() を呼び出した結果を格納するために使用されます。

std:: lower_bound() 関数は、13、23、および 33 の 3 つの異なる値を使用して呼び出されます。各呼び出しで、 lower_bound() は、ベクトル内の値以上の最初の要素を指す反復子を与えます。指定された値。

次に、コードは、 std:: lower_bound() によって返されたイテレータから value.begin() イテレータを減算することによって、ベクトル内のこれらの要素の位置を出力します。これにより、ベクトル内の要素のインデックスが得られます。

出力

結論

C++ の lower_bound() メソッドは、ソートされたコンテナー内で指定された値の最初の出現を検索します。これは C++ の ライブラリの一部であり、配列、ベクトル、およびその他の並べ替えられたコンテナーに対してバイナリ検索を実行するために使用できます。このメソッドは、指定された値以上の範囲内の最初の要素を指す反復子を与えます。 lower_bound() メソッドの詳細については、この記事を参照してください。