複数項目の検索アルゴリズムは、リスト内の特定の要素の出現をすべて検索するために使用されます。 単一項目の検索アルゴリズムとは異なり、このアプローチではターゲット要素の複数の出現を追跡し、それらの位置のリストを返します。
使い方
- リストの先頭から開始します。
- リスト内の各要素を繰り返し処理します。
- 現在の要素をターゲット値と比較します。
- 現在の要素がターゲット値と等しい場合は、その位置を記録します。
- 次の要素に進み、手順 3 ~ 4 を繰り返します。
- リスト全体を反復処理した後、記録された位置のリストを返します。
例
整数のリストを考えて、数字 23 が出現するすべてを検索したいとします。
リスト: {12、23、45、23、56、23、89、90}
- 最初から開始します: 12。希望の番号ではありません。
- 次の要素に移動します: 23。一致が見つかりました。位置を 1 として記録します。
- 次の要素 45 に移動します。目的の数値ではありません。
- 次の要素 23 に移動します。一致が見つかり、位置を 3 として記録します。
- 次の要素 56 に移動します。目的の数値ではありません。
- 次の要素に移動します: 23。一致が見つかり、位置を 5 として記録します。
- 次の要素 89 に移動します。目的の数値ではありません。
- 次の要素 90 に移動します。目的の数値ではありません。
- 反復後、位置のリスト [1, 3, 5] を返します。
C++ のコード例
#include <iostream>
#include <vector>
std::vector<int> multipleItemSearch(const std::vector<int>& arr, int target) {
std::vector<int> positions;
for(int i = 0; i < arr.size(); ++i) {
if(arr[i] == target) {
positions.push_back(i);
}
}
return positions;
}
int main() {
std::vector<int> numbers = {12, 23, 45, 23, 56, 23, 89, 90};
int target = 23;
std::vector<int> result = multipleItemSearch(numbers, target);
std::cout << "Occurrences of " << target << " found at positions: ";
for(int pos: result) {
std::cout << pos << ";
}
std::cout << std::endl;
return 0;
}
この例では、この multipleItemSearch
関数は、整数のリスト内で出現する数値 23 をすべて検索するために使用されます。 結果は、すべての出現の位置を含むベクトルになります(位置は 0 から始まります)。