lower_bound() メソッドとは何ですか?
C++ の lower_bound() メソッドは、ソートされたコンテナー内で指定された値の最初の出現を検索します。これは C++ の
構文
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
std:: lower_bound() 関数は、13、23、および 33 の 3 つの異なる値を使用して呼び出されます。各呼び出しで、 lower_bound() は、ベクトル内の値以上の最初の要素を指す反復子を与えます。指定された値。
次に、コードは、 std:: lower_bound() によって返されたイテレータから value.begin() イテレータを減算することによって、ベクトル内のこれらの要素の位置を出力します。これにより、ベクトル内の要素のインデックスが得られます。
出力
結論
C++ の lower_bound() メソッドは、ソートされたコンテナー内で指定された値の最初の出現を検索します。これは C++ の