溫馨提示×

C++可變參數模板怎樣設置

c++
小樊
107
2024-11-09 09:10:40
欄目: 編程語言

在C++中,可變參數模板允許您創建接受任意數量參數的函數或類。要設置可變參數模板,請遵循以下步驟:

  1. 在函數或類的聲明之前,使用template<...>指定模板參數包(parameter pack)。
  2. 在模板參數包內部,使用省略號...表示參數包。
  3. 在函數或類內部,使用遞歸模板展開(recursive template expansion)或可變參數模板展開(variadic template expansion)處理參數包。

下面是一個簡單的可變參數模板示例,用于計算給定參數的和:

#include <iostream>

// 聲明可變參數模板函數
template<typename T, typename... Args>
T sum(T first, Args... rest);

// 定義可變參數模板函數
template<typename T, typename... Args>
T sum(T first, Args... rest) {
    return first + sum(rest...);
}

int main() {
    int a = 1;
    double b = 2.0;
    char c = '3';

    std::cout << "Sum: " << sum(a, b, c) << std::endl; // 輸出:Sum: 6

    return 0;
}

在這個例子中,我們聲明了一個名為sum的可變參數模板函數,它接受一個類型為T的參數和一個參數包Args... rest。然后,我們使用遞歸模板展開處理參數包,計算所有參數的和。

請注意,這個示例僅適用于單個參數包的情況。如果您需要處理多個參數包,可以使用可變參數模板展開,如下所示:

#include <iostream>

// 聲明可變參數模板函數
template<typename... Packs>
auto sum_all(Packs... packs) -> decltype(packs...);

// 定義可變參數模板函數
template<typename... Packs>
auto sum_all(Packs... packs) -> decltype(packs...) {
    return (packs + ...);
}

int main() {
    int a = 1;
    double b = 2.0;
    char c = '3';

    std::cout << "Sum all: " << sum_all(a, b, c) << std::endl; // 輸出:Sum all: 6

    return 0;
}

在這個例子中,我們聲明了一個名為sum_all的可變參數模板函數,它接受任意數量的參數包。然后,我們使用可變參數模板展開處理參數包,計算所有參數的和。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女