以下のアルゴリズムは、oneapi/dpl/algorithm ヘッダーで定義されています。すべてのアルゴリズムは、oneapi::dpl 名前空間で実装されています。
reduce_by_segment: シーケンスの値とキーの部分リダクションを実行します。各リダクションは、プレディケートによりキーが等しいと判断された値の連続するサブシーケンスのリダクション操作を計算します。戻り値は、キーと値の出力シーケンスの最後を保持するイテレーターのペアです。
正しく計算するため、リダクション操作は結合側を満たしていなければなりません。操作を指定しない場合、デフォルトのリダクション操作は std::plus、デフォルトのプレディケートは std::equal_to になります。このアルゴリズムでは、値に使用される要素の型がデフォルトで構成可能でなければなりません。次に例を示します。
keys: [0,0,0,1,1,1]
values: [1,2,3,4,5,6]
output_keys: [0,1]
output_values: [1+2+3=6,4+5+6=15]
inclusive_scan_by_segment: シーケンスの値に対して部分的なプリフィクス・スキャンを実行します。各スキャンは、キーが等しいと判断された値の連続するサブシーケンスに適用されます。戻り値は、結果シーケンスの最後を示すイテレーターです。
正しく計算するため、プリフィクス・スキャン操作は結合側を満たしていなければなりません。操作を指定しない場合、デフォルトの操作は std::plus、デフォルトのプレディケートは std::equal_to になります。このアルゴリズムでは、値に使用される要素の型がデフォルトで構成可能でなければなりません。次に例を示します。
keys: [0,0,0,1,1,1]
values: [1,2,3,4,5,6]
result: [1,1+2=3,1+2+3=6,4,4+5=9,4+5+6=15]
exclusive_scan_by_segment: シーケンスの値に対して部分的なプリフィクス・スキャンを実行します。各スキャンは、キーが等しいと判断された値の連続するサブシーケンスに適用され、最初の要素を提供された初期値に設定します。戻り値は、結果シーケンスの最後を示すイテレーターです。
正しく計算するため、プリフィクス・スキャン操作は結合側を満たしていなければなりません。操作を指定しない場合、デフォルトの操作は std::plus、デフォルトのプレディケートは std::equal_to になります。次に例を示します。
keys: [0,0,0,1,1,1]
values: [1,2,3,4,5,6]
initial value: [0]
result: [0,0+1=1,0+1+2=3,0,0+4=4,0+4+5=9]
binary_search: 提供された検索シーケンスの各値について、入力シーケンスのバイナリー検索を実行します。検索シーケンスの各要素に対して、アルゴリズムは、入力シーケンスで検索値が見つかったかどうかを示す結果シーケンスにブール値を書き込みます。戻り値は、結果シーケンスの最後の値の 1 つ後を示すイテレーターです。このアルゴリズムは、入力シーケンスが比較子によってソートされていると仮定します。比較子が提供されない場合、operator< を使用して要素を比較する関数オブジェクトが使用されます。次に例を示します。
input sequence: [0, 2, 2, 2, 3, 3, 3, 3, 6, 6]
search sequence: [0, 2, 4, 7, 6]
result sequence: [true, true, false, false, true]
lower_bound: 入力シーケンスのソートされた順序に違反することなく検索値を入力できるように、入力シーケンスの最小インデックスを特定するために提供された検索シーケンスの各値について、入力シーケンスのバイナリー検索を実行します。各検索値の最小インデックスが結果シーケンスに書き込まれ、アルゴリズムは結果シーケンスに書き込まれた最後の値の 1 つ後を示すイテレーターを返します。比較子が提供されない場合、operator< を使用して要素を比較する関数オブジェクトが使用されます。次に例を示します。
input sequence: [0, 2, 2, 2, 3, 3, 3, 3, 6, 6]
search sequence: [0, 2, 4, 7, 6]
result sequence: [0, 1, 8, 10, 8]
upper_bound: 入力シーケンスのソートされた順序に違反することなく検索値を入力できるように、入力シーケンスの最大インデックスを特定するために提供された検索シーケンスの各値について、入力シーケンスのバイナリー検索を実行します。各検索値の最大インデックスが結果シーケンスに書き込まれ、アルゴリズムは結果シーケンスに書き込まれた最後の値の 1 つ後を示すイテレーターを返します。比較子が提供されない場合、operator< を使用して要素を比較する関数オブジェクトが使用されます。次に例を示します。
input sequence: [0, 2, 2, 2, 3, 3, 3, 3, 6, 6]
search sequence: [0, 2, 4, 7, 6]
result sequence: [1, 4, 8, 10, 10]