HiroLab

プログラミングに関する情報発信サイト。

C++

【C++】Day 16:C++のラムダ式とSTLアルゴリズム

投稿日:

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アルゴリズムの使い方を理解し、プログラムの柔軟性と効率性を向上させることができます。問題を解いたら、プログラムが正しく動作しているかどうかを確認してみてください。

-C++
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【C++】Day 26:デザインパターン「作成型パターン」

Day 26では、デザインパターンのうち「作成型パターン」について学習します。 作成型パターンは、オブジェクトのインスタンスを生成する方法に関するパターンです。主な作成型パターンには、シングルトン、フ …

【C++】Day 15:C++のテンプレート

Day 15では、C++のテンプレートについて学習します。 テンプレートは、汎用的なプログラムを作成するための強力な機能で、関数やクラスを汎用的に定義することができます。 以下にテンプレートの主な内容 …

【C++】Day 14:C++における文字列操作

Day 14では、C++における文字列操作について学習します。 C++では標準ライブラリである`<string>`を使用して、文字列を操作することができます。 以下に文字列操作の主な内容と …

【C++】Day 17:例外安全性とエラーハンドリング

Day 17では、例外安全性とエラーハンドリングについて学習します。 C++では、プログラムが例外(予期しないエラー状態)に遭遇した際に、そのエラーを適切に処理することが重要です。例外安全性は、プログ …

【C++】Day 13:メモリ管理とスマートポインタ

Day 13では、メモリ管理とスマートポインタについて学習します。 C++では、メモリの確保と解放を適切に行うことが重要です。スマートポインタは、メモリの自動管理を行う便利な機能です。 以下にそれぞれ …