-
ループを使用した線形探索: 以下のコードは、配列内の整数を線形探索する方法を示しています。
#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; }
-
二分探索: 以下のコードは、ソートされた配列内での整数の二分探索を示しています。
#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; }
-
標準ライブラリの関数を使用する方法: 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++で整数を検索するためのいくつかの一般的な手法とコード例です。他にもさまざまなアプローチがありますが、これらの例は初心者にも理解しやすく、実装が比較的簡単です。必要に応じて、自分の要件やプロジェクトに適した方法を選択してください。