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 13:メモリ管理とスマートポインタ

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

【C++】Day1-30 総復習/演習問題

以下に、Day 1-30までのC++学習カリキュラムにおける総復習と演習問題を提示します。 演習問題に対する回答と解説も記載しますので、各問題に取り組んで理解を深めてください。 ※後半に回答/解説を記 …

【C++】Day 6:関数について

Day 6では、関数について学習します。 関数は、プログラム内で特定のタスクを実行するために使用されるブロック(サブルーチン)です。関数はメインプログラムから呼び出すことができ、再利用性とコードの構造 …

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

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

【C++】Day 28:デザインパターン「行動型パターン」

Day 28では、デザインパターンのうち「行動型パターン」について学習します。 行動型パターンは、オブジェクト間の相互作用や責任の分担に関するパターンです。主な行動型パターンには、ストラテジ、オブザー …