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 6:関数について

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

【C++】Day 29:「セキュリティと暗号化」

Day 29では、「セキュリティと暗号化」について学習します。 セキュリティと暗号化は、情報を保護するための重要な概念です。データの機密性、完全性、可用性を確保するために、データの暗号化、ハッシュ化、 …

【C++】Day 2:変数とデータ型について

Day 2では、変数とデータ型について学習します。 変数はデータを格納するためのメモリ上の領域であり、データ型はその変数が保持できるデータの種類を指定します。 C++にはいくつかの基本的なデータ型があ …

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

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

【C++】30日間で体系的に学習するのに効果的なカリキュラム

C++を30日間で体系的に学習するための効果的なカリキュラムを以下に示します。 このカリキュラムは、基本的な概念から徐々に複雑なトピックに進み、実践的なプロジェクトを通じて学習を強化するアプローチを取 …