• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

template<typename ... Args>可变参数模板的解释和使用

武飞扬头像
*Major*
帮助1

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;
}



学新通

学新通

示例:

#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.bilibili.com/video/BV1mY411T76u/?spm_id_from=333.337.search-card.all.click&vd_source=d393a944eac7e6a89698b228a5a6749e

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfkfj
系列文章
更多 icon
同类精品
更多 icon
继续加载