template<typename … Args>:可变参数模板的解释和使用
template<typename … Args>是变参模板的使用
用之前先了解普通模板如何使用
#include <iostream>
using namespace std;
// 函数模板
// 交换两个整数型
void swapInt(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
// 交换两个浮点型
void swapDouble(double& a, double& b)
{
double temp = a;
a = b;
b = temp;
}
void test01()
{
int a = 10;
int b = 20;
swapInt(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
double c = 10.1;
double d = 20.1;
swapDouble(c, d);
cout << "c = " << c << endl;
cout << "d = " << d << endl;
}
// 实例:
//函数模板
template<typename T> //声明一个模板,告诉编译器后面代码中紧跟着的T不要报错,T是一个通用数据类型
void mySwap(T &a,T&b)
{
T temp = a;
a = b;
b = temp;
}
void test02()
{
int a = 10;
int b = 20;
//利用函数模板交换
//两种方式使用函数模板
//1、自动类型推导
mySwap(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
double c = 10.1;
double d = 20.1;
//2、显示指定类型
mySwap<double>(c, d);
cout << "c = " << c << endl;
cout << "d = " << d << endl;
}
int main()
{
test01();
test02();
return 0;
}
文章来源:https://www.toymoban.com/news/detail-643712.html
示例:
#include <iostream>
#include <optional>
template<typename T>
bool isEqual(T a, T b) {
return a == b;
}
template<typename T, typename... Args> // Args是一个模板参数包,包就是0-多个的意思,表示0或多个模板类型参数
bool isEqual(T a, T b, Args... args) { // args是一个参数包,包就是0-多个的意思,表示0或多个参数
return a == b && isEqual(args...);
}
int main()
{
// 编译器会推断包中的参数的数目,写多少不同的参数个数和类型,编译器会实例化出多少个不同的版本
if (isEqual(1, 1, 2, 2, 3, 3, 4, 4))
{
std::cout << "OK" ;
}
}
文章来源地址https://www.toymoban.com/news/detail-643712.html
https://www.bilibili.com/video/BV1mY411T76u/?spm_id_from=333.337.search-card.all.click&vd_source=d393a944eac7e6a89698b228a5a6749e
到了这里,关于template<typename ... Args>:可变参数模板的解释和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!