STL アルゴリズムを使って要素を検索する
このステップでは、STL アルゴリズムを使ってコンテナ内の要素を検索する方法を学びます。<algorithm>
ライブラリは、要素の検索と位置特定に強力な関数を提供します。
WebIDE を開き、~/project
ディレクトリに find_demo.cpp
という新しいファイルを作成します。
touch ~/project/find_demo.cpp
find_demo.cpp
ファイルに次のコードを追加します。
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 整数のベクターを作成する
std::vector<int> numbers = {5, 2, 8, 1, 9, 3, 8};
// 特定の要素の最初の出現位置を検索する
auto it = std::find(numbers.begin(), numbers.end(), 8);
if (it!= numbers.end()) {
std::cout << "8の最初の出現位置はインデックス: "
<< std::distance(numbers.begin(), it) << std::endl;
}
// 要素の出現回数を数える
int count = std::count(numbers.begin(), numbers.end(), 8);
std::cout << "ベクター内の8の数: " << count << std::endl;
// 6より大きい要素があるかどうかを検索する
bool has_large_element = std::any_of(numbers.begin(), numbers.end(),
[](int n) { return n > 6; });
std::cout << "ベクターに6より大きい要素がある: "
<< (has_large_element? "Yes" : "No") << std::endl;
// 最小値と最大値の要素を検索する
auto min_it = std::min_element(numbers.begin(), numbers.end());
auto max_it = std::max_element(numbers.begin(), numbers.end());
std::cout << "最小値の要素: " << *min_it << std::endl;
std::cout << "最大値の要素: " << *max_it << std::endl;
return 0;
}
プログラムをコンパイルして実行します。
g++ find_demo.cpp -o find_demo
./find_demo
実行結果の例:
8の最初の出現位置はインデックス: 2
ベクター内の8の数: 2
ベクターに6より大きい要素がある: Yes
最小値の要素: 1
最大値の要素: 9
STL 検索アルゴリズムに関する要点:
std::find()
は要素の最初の出現位置を特定する
std::count()
は要素の出現回数を数える
std::any_of()
は任意の要素が条件を満たすかどうかをチェックする
std::min_element()
と std::max_element()
は極端な値を見つける
- ラムダ関数を使ってカスタム検索条件を指定できる
- 返されるイテレータは見つかった要素を指す