Maison >développement back-end >C++ >Comment utiliser les objets fonctions STL pour la validation et la transformation des données ?

Comment utiliser les objets fonctions STL pour la validation et la transformation des données ?

王林
王林original
2024-04-25 18:54:011135parcourir

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.

如何使用 STL 函数对象来进行数据验证和转换?

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

  • unary_function940834c0422a33d37a595b51693c1a5f : Cet objet fonction accepte un paramètre et renvoie une valeur booléenne, indiquant si les données d'entrée sont valides. Par exemple :
struct IsEven {
    bool operator()(int x) {
        return x % 2 == 0;
    }
};
  • binary_function1d55d48b2b7061560830d2857a28b418 : Cet objet fonction accepte deux paramètres et renvoie une valeur booléenne, indiquant si les données d'entrée sont valides. Par exemple :
struct IsInVector {
    bool operator()(int x, vector<int>& v) {
        return find(v.begin(), v.end(), x) != v.end();
    }
};

Convert function object

  • unary_functionabbd655bd3f9f929be0207abcc18a2ef : Cet objet fonction accepte un paramètre et renvoie une nouvelle valeur. Par exemple :
struct DoubleValue {
    double operator()(int x) {
        return (double)x * 2;
    }
};
  • binary_functiona03c7273ce24cef13581dbd8653017cf : Cet objet fonction accepte deux paramètres et renvoie une nouvelle valeur. Par exemple :
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn