STL 関数オブジェクトを使用すると、データの検証と変換が簡素化されます。検証関数オブジェクトはデータが有効かどうかを示すブール値を返し、変換関数オブジェクトは新しい値を返します。これらの関数オブジェクトをデータ コンテナーに適用すると、数値が 10 より大きいかどうかを検証したり、10 より大きい数値を 2 倍にしたりするなど、データの検証と変換を実行できます。
データ検証と変換に STL 関数オブジェクトを使用する
STL ライブラリには、データ検証を実行できる一連の関数オブジェクトが含まれていますデータコンテナに関するさまざまな操作と変換。これらの関数オブジェクトは、データ検証および変換タスクを簡潔かつ効率的に処理するのに非常に役立ちます。
関数オブジェクトの概要
関数オブジェクトは、通常の関数と同様に、他の関数から呼び出すことができるクラスまたは構造体です。これらには、関数呼び出し構文を使用してデータに適用できる演算子のオーバーロードがあります。
検証関数オブジェクト
struct IsEven { bool operator()(int x) { return x % 2 == 0; } };
struct IsInVector { bool operator()(int x, vector<int>& v) { return find(v.begin(), v.end(), x) != v.end(); } };
Convert function object
struct DoubleValue { double operator()(int x) { return (double)x * 2; } };
struct AddVectors { vector<int> operator()(vector<int>& v1, vector<int>& v2) { vector<int> result; for (int i = 0; i < v1.size(); i++) { result.push_back(v1[i] + v2[i]); } return result; } };
次のベクトルについて考えます。数値が 10 より大きいかどうかを検証する必要があります。 10 より大きい数値を 2 倍します:
vector<int> numbers = {5, 12, 3, 18, 6};
次のように検証と変換に STL 関数オブジェクトを使用できます:
// 验证是否大于 10 bool is_greater_than_10(int x) { return x > 10; } // 加倍大于 10 的数字 double double_if_greater_than_10(int x) { return x > 10 ? x * 2 : x; } // 验证并对向量应用转换 vector<int> result; transform(numbers.begin(), numbers.end(), back_inserter(result), double_if_greater_than_10);
これで、
result ベクトルには変換された値が含まれます。ここで、10 より大きい数値は 2 倍になり、10 以下の数値は変更されません: 以上がデータの検証と変換に STL 関数オブジェクトを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。// 输出转换后的结果
for (int num : result) {
cout << num << " ";
}
// 输出:5 24 3 36 6