C++ プログラミング言語を使用して、ゲーム、グラフィックス、Web サーバーなどのさまざまなプログラムを作成できます。ただし、プログラム内のデータに対して、検索、並べ替え、要素範囲の最大値または最小値の検索などの操作を実行する必要がある場合があります。並べ替えられた要素範囲内の値の上限を見つけるために使用できる関数の 1 つは、upper_bound() です。
C++のupper_bound()関数とは何ですか
C++ の upper_bound() 関数は、ソートされた要素の範囲と値を引数として受け取り、その値より大きい範囲内の最初の要素を指す反復子を返す関数です。
これには 2 つの異なるタイプの引数があります。
数値上限 ( 1つで。 初め 、1つで。 最後 、 価値 )
検査する要素の範囲を指定するイテレータは、first と last です。使用される間隔には、最初の要素から最後までのすべての要素が含まれますが、last で示される要素は含まれません。 Value は要素を比較する値です。
数値上限 ( 1つで。 初め 、1つで。 最後 、値、比較の比較 )
この場合、バイナリ関数 comp は bool に変換できる値を生成し、同じ型の 2 つのパラメータを範囲の項目として受け入れます。特定の条件により、最初の引数が 2 番目の引数より大きくないことが定められている場合、関数は true の結果を返す必要があり、そうでない場合は false を返す必要があります。
C++ で upper_bound() 関数を使用する方法
upper_bound() 関数を使用すると、さまざまな状況で並べ替えられた要素の範囲内の値の上限を見つけることができます。たとえば、これを使用して、並べ替えられた配列またはベクトル内の要素の位置を検索したり、セットまたはマップ内で次に大きい要素を検索したりできます。 C++ で upper_bound() 関数を使用する方法の例をいくつか示します。
例 1: upper_bound() 関数を使用して、ソートされた配列内の要素の位置を検索する
以下は、upper_bound() 関数を使用して、ソートされた整数配列内の要素の位置を検索し、それを画面に表示する例です。
#include
#include
を使用して 名前空間 標準 ;
整数 主要 ( )
{
整数 配列 [ 】 = { 15 、 35 、 4.5 、 55 、 65 } ;
整数 ある = のサイズ ( 配列 ) / のサイズ ( 配列 [ 0 】 ) ;
コート << '配列には以下が含まれます:' ;
のために ( 整数 私 = 0 ; 私 < ある ; 私 ++ )
コート << 配列 [ 私 】 << 「」 ;
コート << 」 \n 」 ;
整数 b = 4.5 ; // 値を宣言して初期化します
整数 * p = 上界 ( 配列、配列 + a、b ) ;
コート << 「の上限」 << b << ' の位置: ' << ( p - 配列 ) << 」 \n 」 ; // ポインタ演算を使用して位置を表示します
戻る 0 ;
}
まずプログラムは必要なヘッダー ファイルと数値を含む配列を定義し、次に sizeof() 関数を使用して配列のサイズを取得します。次に、for ループを使用して配列の要素を表示し、配列内の位置がポインターを使用して決定される整数を宣言し、出力に表示します。
例 2: upper_bound() 関数を使用してセット内の次に大きい要素を検索する
以下は、upper_bound() 関数を使用して、一連の整数の中から指定された値より次に大きい要素を検索し、それを画面に表示するコード例です。
#include#include
#include <ベクター>
を使用して 名前空間 標準 ;
整数 主要 ( )
{
セット < 整数 > 1つで = { 15 、 25 、 35 、 4.5 、 55 } ; // 整数のセットを宣言して初期化します
コート << 「与えられた数字:」 ;
のために ( 自動 ある : 1つで ) // 範囲ベースの for ループを使用して設定された要素を表示します
コート << ある << 「」 ;
コート << 」 \n 」 ;
整数 ある = 4.5 ; // 値を宣言して初期化します
自動 それ = 上界 ( 1つで。 始める ( ) 、1つで。 終わり ( ) 、 ) ; // upper_bound() を使用してセット内の x の上限を見つけます
もし ( それ ! = 1つで。 終わり ( ) ) // イテレータが有効かどうかを確認する
コート << 「次に大きい数字」 << ある << ' は ' << * それ << 」 \n 」 ; // 逆参照演算子を使用して要素を表示します
それ以外
コート << 「これより大きな数字はない」 << ある << 」 \n 」 ; // 該当する要素が見つからない場合はメッセージを表示します
戻る 0 ;
}
最初にコードで必要なヘッダー ファイルを定義し、次に 5 つの要素のベクトルを定義します。次に、要素のデータ型を自動的に設定できる auto キーワードを使用してベクトルが表示されます。次に、値 45 を持つ変数が宣言され、upper_bound() 関数を使用して定義されたベクトルと比較され、その後比較結果が表示されます。
結論
upper_bound() 関数は、指定された値より大きい、並べ替えられた範囲内の最初の要素を指す反復子を返す関数です。指定した数値以上の間隔内の最初の数値を見つけるには、C++ の upper_bound() 関数を使用します。これは、リスト内で次に大きい数値を検索する場合や、ソートされた配列内で指定されたしきい値より大きい最初の要素を検索する場合などのタスクに役立ちます。