Maison >développement back-end >C++ >Comment utiliser les objets fonctions STL pour la validation et la transformation des données ?
Utilisez des objets de fonction STL pour simplifier la validation et la transformation des données. L'objet fonction de vérification renvoie une valeur booléenne indiquant si les données sont valides ; l'objet fonction de conversion renvoie une nouvelle valeur. Ces objets fonction peuvent être appliqués à des conteneurs de données pour effectuer une validation et des transformations de données, telles que la validation qu'un nombre est supérieur à 10 et le doublement de nombres supérieurs à 10.
Utilisez des objets fonction STL pour la validation et la transformation des données
La bibliothèque STL contient un ensemble d'objets fonction qui peuvent effectuer diverses opérations et transformations sur des conteneurs de données. Ces objets fonction sont très utiles pour gérer les tâches de validation et de transformation des données de manière concise et efficace.
Introduction aux objets fonction
Un objet fonction est une classe ou une structure qui peut être appelée comme une fonction normale dans d'autres fonctions. Ils ont une surcharge d'opérateurs qui permet l'application aux données en utilisant la syntaxe d'appel de fonction.
Objet fonction de validation
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; } };
Cas pratique : Vérifier et convertir des vecteurs numériques
Considérons le vecteur suivant, vous devez vérifier si le nombre est supérieur à 10 et doubler le nombre supérieur à 10 :
vector<int> numbers = {5, 12, 3, 18, 6};
Vous pouvez utiliser le Objet fonction STL à vérifier et convertir comme suit :
// 验证是否大于 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);
Désormais, le vecteur result
contiendra les valeurs transformées, où les nombres supérieurs à 10 sont doublés, tandis que les nombres inférieurs ou égaux à 10 restent inchangés :
// 输出转换后的结果 for (int num : result) { cout << num << " "; } // 输出:5 24 3 36 6
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!