C++で整数を検索する方法


  1. ループを使用した線形探索: 以下のコードは、配列内の整数を線形探索する方法を示しています。

    #include <iostream>
    int linearSearch(int arr[], int size, int target) {
       for (int i = 0; i < size; i++) {
           if (arr[i] == target) {
               return i;  // 見つかった場合はインデックスを返す
           }
       }
       return -1;  // 見つからなかった場合は-1を返す
    }
    int main() {
       int arr[] = {1, 2, 3, 4, 5};
       int size = sizeof(arr) / sizeof(arr[0]);
       int target = 3;
       int result = linearSearch(arr, size, target);
       if (result == -1) {
           std::cout << "整数が見つかりませんでした。" << std::endl;
       } else {
           std::cout << "整数が見つかりました。インデックス: " << result << std::endl;
       }
       return 0;
    }
  2. 二分探索: 以下のコードは、ソートされた配列内での整数の二分探索を示しています。

    #include <iostream>
    #include <algorithm>
    int binarySearch(int arr[], int size, int target) {
       int left = 0;
       int right = size - 1;
       while (left <= right) {
           int mid = left + (right - left) / 2;
           if (arr[mid] == target) {
               return mid;  // 見つかった場合はインデックスを返す
           } else if (arr[mid] < target) {
               left = mid + 1;
           } else {
               right = mid - 1;
           }
       }
       return -1;  // 見つからなかった場合は-1を返す
    }
    int main() {
       int arr[] = {1, 2, 3, 4, 5};
       int size = sizeof(arr) / sizeof(arr[0]);
       int target = 3;
       std::sort(arr, arr + size);  // 二分探索を使用するために配列をソートする
       int result = binarySearch(arr, size, target);
       if (result == -1) {
           std::cout << "整数が見つかりませんでした。" << std::endl;
       } else {
           std::cout << "整数が見つかりました。インデックス: " << result << std::endl;
       }
       return 0;
    }
  3. 標準ライブラリの関数を使用する方法: C++の標準ライブラリには、整数の検索に便利な関数がいくつか用意されています。例えば、std::find関数を使用することができます。

    #include <iostream>
    #include <algorithm>
    #include <vector>
    int main() {
       std::vector<int> vec = {1, 2, 3, 4, 5};
       int target = 3;
       auto it = std::find(vec.begin(), vec.end(), target);
       if (it != vec.end()) {
           int index = std::distance(vec.begin(), it);
           std::cout << "整数が見つかりました。インデックス: " << index << std::endl;
       } else {
           std::cout << "整数が見つかりませんでした。" << std::endl;
       }
       return 0;
    }

これらはC++で整数を検索するためのいくつかの一般的な手法とコード例です。他にもさまざまなアプローチがありますが、これらの例は初心者にも理解しやすく、実装が比較的簡単です。必要に応じて、自分の要件やプロジェクトに適した方法を選択してください。