Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan objek fungsi STL untuk pengesahan dan transformasi data?

Bagaimana untuk menggunakan objek fungsi STL untuk pengesahan dan transformasi data?

王林
王林asal
2024-04-25 18:54:011072semak imbas

Gunakan objek fungsi STL untuk memudahkan pengesahan dan transformasi data. Objek fungsi pengesahan mengembalikan nilai Boolean yang menunjukkan sama ada data itu sah objek fungsi penukaran mengembalikan nilai baharu. Objek fungsi ini boleh digunakan pada bekas data untuk melakukan pengesahan dan transformasi data, seperti mengesahkan bahawa nombor lebih besar daripada 10 dan menggandakan nombor lebih daripada 10.

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

Gunakan objek fungsi STL untuk pengesahan dan transformasi data

Pustaka STL mengandungi satu set objek fungsi yang boleh melakukan pelbagai operasi dan transformasi pada bekas data. Objek fungsi ini sangat berguna untuk mengendalikan tugas pengesahan dan transformasi data secara ringkas dan cekap.

Pengenalan kepada Objek Fungsi

Objek fungsi ialah kelas atau struktur yang boleh dipanggil seperti fungsi biasa dalam fungsi lain. Mereka mempunyai lebihan pengendali yang membolehkan aplikasi kepada data menggunakan sintaks panggilan fungsi.

Objek fungsi pengesahan

  • unary_function940834c0422a33d37a595b51693c1a5f: Objek fungsi ini menerima parameter dan mengembalikan nilai Boolean, menunjukkan sama ada data input adalah sah. Contohnya:
struct IsEven {
    bool operator()(int x) {
        return x % 2 == 0;
    }
};
  • binary_function1d55d48b2b7061560830d2857a28b418: Objek fungsi ini menerima dua parameter dan mengembalikan nilai Boolean, menunjukkan sama ada data input adalah sah. Contohnya:
struct IsInVector {
    bool operator()(int x, vector<int>& v) {
        return find(v.begin(), v.end(), x) != v.end();
    }
};

Tukar objek fungsi

  • unary_functionabbd655bd3f9f929be0207abcc18a2ef: Objek fungsi ini menerima satu parameter dan mengembalikan nilai baharu. Contohnya:
struct DoubleValue {
    double operator()(int x) {
        return (double)x * 2;
    }
};
  • binary_functiona03c7273ce24cef13581dbd8653017cf: Objek fungsi ini menerima dua parameter dan mengembalikan nilai baharu. Contohnya:
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;
    }
};

Kes praktikal: Sahkan dan tukar vektor berangka

Pertimbangkan vektor berikut, anda perlu mengesahkan sama ada nombor itu lebih besar daripada 10 dan dua kali ganda nombor lebih besar daripada 10:

rreee

Anda boleh menggunakan Objek fungsi STL untuk mengesahkan dan menukar seperti berikut:

vector<int> numbers = {5, 12, 3, 18, 6};

Sekarang, vektor result akan mengandungi nilai yang diubah, di mana nombor yang lebih besar daripada 10 digandakan, manakala nombor yang kurang daripada atau sama dengan 10 kekal tidak berubah:

// 验证是否大于 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);

Atas ialah kandungan terperinci Bagaimana untuk menggunakan objek fungsi STL untuk pengesahan dan transformasi data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn