91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++函數對象如何進行模板編程

c++
小樊
82
2024-10-30 16:19:27
欄目: 編程語言

在C++中,使用函數對象(也稱為仿函數)進行模板編程可以讓你編寫更加通用和可重用的代碼。函數對象是一個類,它重載了()運算符,使其可以像函數一樣被調用。這里有一個簡單的例子,展示了如何使用模板函數對象:

#include <iostream>
#include <vector>
#include <algorithm>

// 定義一個模板函數對象
template<typename T>
class MyFunctor {
public:
    T operator()(const T& a, const T& b) const {
        return a + b;
    }
};

int main() {
    // 使用模板函數對象對整數向量進行操作
    std::vector<int> nums1 = {1, 2, 3, 4, 5};
    std::vector<int> nums2 = {6, 7, 8, 9, 10};

    MyFunctor<int> add;
    std::vector<int> result1 = std::transform(nums1.begin(), nums1.end(), nums2.begin(), result1.begin(), add);

    // 使用模板函數對象對浮點數向量進行操作
    std::vector<float> nums3 = {1.1, 2.2, 3.3, 4.4, 5.5};
    std::vector<float> nums4 = {6.6, 7.7, 8.8, 9.9, 10.1};

    MyFunctor<float> add_float;
    std::vector<float> result2 = std::transform(nums3.begin(), nums3.end(), nums4.begin(), result2.begin(), add_float);

    // 輸出結果
    std::cout << "Result for integers: ";
    for (int num : result1) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::cout << "Result for floats: ";
    for (float num : result2) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在這個例子中,我們定義了一個名為MyFunctor的模板類,它接受一個類型參數T。這個類重載了()運算符,使其可以像函數一樣被調用。我們在main函數中創建了兩個不同類型的向量(整數和浮點數),并使用MyFunctor對它們進行操作。注意,我們為每個向量創建了不同的實例(addadd_float),以便根據向量的類型調用正確的函數對象。

0
克什克腾旗| 措美县| 垦利县| 民权县| 霍邱县| 芜湖县| 陇西县| 阳东县| 柳河县| 普定县| 大庆市| 华亭县| 沛县| 甘泉县| 东海县| 大英县| 鸡泽县| 宁陵县| 松桃| 长岭县| 黔西县| 玉龙| 伊宁市| 五河县| 左云县| 邯郸市| 乳源| 丽江市| 贵州省| 嘉鱼县| 桓台县| 霍州市| 施甸县| 平阴县| 南木林县| 阿克苏市| 庆云县| 镇宁| 清流县| 策勒县| 松原市|