TransformおよびGenerateアルゴリズム
メニューを表示するにはスワイプしてください
定義
C++のtransformアルゴリズムとgenerateアルゴリズムは、コンテナ内のデータを直接変更または生成する関数型スタイルの操作を可能にする機能。
STLはこの目的のために2つの主要な関数、std::transformとstd::generateを提供。std::transformは範囲内の各要素に関数を適用して変更された結果を生成し、std::generateは新しい値を供給する関数を使って範囲を埋める。これらを組み合わせることで、コードがより簡潔で表現力豊かになり、保守性も向上。
これらのアルゴリズムにより、STLの機能を最大限に活用した明確で保守性の高いコードの記述が可能。
main.cpp
1234567891011121314151617#include <iostream> #include <vector> #include <algorithm> #include <ranges> int square(int x) { return x * x; } int main() { std::vector<int> data{1, 2, 3, 4, 5}; std::vector<int> result(data.size()); std::transform(data.begin(), data.end(), result.begin(), square); for (int n : result) std::cout << n << " "; }
コンテナに動的に計算された値を格納する必要がある場合は、std::generate を使用。ジェネレーター関数を適用して、範囲内の各要素を埋めるため、乱数やシーケンス、計算値の生成に最適。std::transform と組み合わせることで、よりクリーンで表現力のあるコードを記述可能。
main.cpp
12345678910111213#include <iostream> #include <vector> #include <algorithm> #include <cstdlib> int main() { std::vector<int> numbers(5); std::generate(numbers.begin(), numbers.end(), rand); // Fill with random values for (int n : numbers) std::cout << n << ' '; }
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 11
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 11