Day 16では、C++のラムダ式とSTLアルゴリズムについて学習します。
ラムダ式は、簡単な関数をインラインで定義する方法であり、STLアルゴリズムは標準ライブラリのアルゴリズム関数です。
以下にそれぞれの内容を詳細に説明し、例題と演習問題を提示します。
ラムダ式:
1. ラムダ式の構文:
– ラムダ式は、`[]` 内にキャプチャリスト、`()` 内にパラメータリスト、`{}` 内に関数の本体を定義します。
2. ラムダ式の使い方:
– ラムダ式は関数オブジェクト(関数ポインタのようなもの)として使用できます。
– 関数内で簡単な処理を行うためにラムダ式を使用することができます。
STLアルゴリズム:
1. STLアルゴリズムの概要:
– STLアルゴリズムは、標準ライブラリで提供されるアルゴリズム関数のことです。
– `<algorithm>`ヘッダーに定義されており、汎用的なアルゴリズムを提供します。
2. STLアルゴリズムの使い方:
– STLアルゴリズムはコンテナ(例:`vector`、`list`など)上で動作し、ソート、検索、変換などの機能を提供します。
例題:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// ラムダ式の使用例
int x = 5, y = 10;
auto sum = [](int a, int b) { return a + b; };
std::cout << "Sum: " << sum(x, y) << std::endl;
// STLアルゴリズムの使用例
std::vector<int> numbers = {10, 5, 7, 3, 8};
// ソート
std::sort(numbers.begin(), numbers.end());
std::cout << "Sorted numbers: ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
// 検索
int searchValue = 7;
auto it = std::find(numbers.begin(), numbers.end(), searchValue);
if (it != numbers.end()) {
std::cout << "Found " << searchValue << " at index: " << std::distance(numbers.begin(), it) << std::endl;
} else {
std::cout << searchValue << " not found." << std::endl;
}
return 0;
}
演習問題:
1. ユーザーに整数のベクトルを入力してもらい、そのベクトルをソートして表示するプログラムを作成してください。ソートにはSTLのアルゴリズムを使用してください。
2. ユーザーに文字列のリストを入力してもらい、それぞれの文字列を大文字に変換して表示するプログラムを作成してください。文字列の変換にはラムダ式を使用してください。
これらの例題と演習問題を解くことで、ラムダ式とSTLアルゴリズムの使い方を理解し、プログラムの柔軟性と効率性を向上させることができます。問題を解いたら、プログラムが正しく動作しているかどうかを確認してみてください。