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

这篇具有很好参考价值的文章主要介绍了template<typename ... Args>:可变参数模板的解释和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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



template<typename ... Args>:可变参数模板的解释和使用,c++,算法,c语言

示例:

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

}

template<typename ... Args>:可变参数模板的解释和使用,c++,算法,c语言文章来源地址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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++11】移动赋值 | 新的类功能 | 可变参数模板

    C++11中,string中的operator= 包含 参数为右值的版本 C++98中 没有移动赋值和移动构造 , 只有参数为左值 的赋值重载(operator=)和拷贝构造 本来只有两次深拷贝,但是由于调用拷贝赋值时,内部又进行一次拷贝构造,所以导致最终进行三次深拷贝 这里编译器是不能优化的, 因为优

    2024年02月08日
    浏览(45)
  • 【C++杂货铺】C++11新特性——可变参数模板

    C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模板和函数模板中只能含固定数量的模板参数,可变模板参数无疑是一个巨大的改进。然而由于可变模板参数比较抽象,使用起来需要一定的技巧,所以之一块还是比较晦涩的。本

    2024年02月03日
    浏览(43)
  • C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』

    ✨个人主页: 北 海 🎉所属专栏: C++修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 自从C++98以来,C++11无疑是一个相当成功的版本更新。它引入了许多重要的语言特性和标准库增强,为C++编程带来了重大的改进和便利。C++11的发布标志着C++语言的现代化和进步,为程序员

    2024年02月05日
    浏览(50)
  • 【C++进阶】C++11(下)可变参数模板&lambda表达式&包装器

    我们紧接着上一节的讲解来进行 C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧

    2024年04月11日
    浏览(90)
  • 【python基础】魔法参数*args, **kwargs的使用

    Python中传递可变参数的方式有两种,位置参数(positional argrment)和参数(keyword argument)。 本文主要讲魔法参数 *args和 **kwargs 的如何使用,如何将不定数量的参数传递给一个函数和调用一个函数。 *args 和 **kwargs 都是python中的可变参数。 *args可以用来表示任何多个无名

    2024年02月06日
    浏览(31)
  • 【ES实战】索引模板template使用说明

    模板的主要作用:可以帮助简化创建索引的语句,将模板中的配置和映射应用到创建的索引中。 新建索引时,索引名称满足 index_patterns 条件的,将会使用索引模板中的配置和映射。 index_patterns 使用 * 进行通配,不支持复杂的正则。 indexPattern 要求: 不能包含空字符 不能以

    2023年04月20日
    浏览(53)
  • 8-tornado中模板的使用(通过字符串返回、通过模板Template返回、通过模板render返回)、模板案例

    tornado.template 一个简单的模板系统,将模板编译为Python代码。 基本用法如下 * 前端 后端

    2024年02月04日
    浏览(38)
  • ES 10 - 如何使用Elasticsearch的索引模板(index template)

    本文转载自:ES 10 - 如何使用Elasticsearch的索引模板(index template) - 瘦风 - 博客园 索引模板: 就是把已经创建好的某个索引的参数设置(settings)和索引映射(mapping)保存下来作为模板, 在创建新索引时, 指定要使用的模板名, 就可以直接重用已经定义好的模板中的设置和映射. (1) sett

    2024年02月15日
    浏览(38)
  • 【Jetpack】Navigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )

    代码地址 : CSDN ( 本博客代码快照 | 推荐下载 0 积分 ) : https://download.csdn.net/download/han1202012/88251933 GitHub ( 可能已经覆盖 ) : https://github.com/han1202012/Navigation 1、Navigation 组件中的 Bundle 数据传递 之前的 默认 Navigation 跳转方法 , 只需要传入 navigation 资源 ID , 即可完成页面跳转 ; Nav

    2024年02月11日
    浏览(42)
  • 【C】【C++】可变参数、不定参函数的使用

    C 语言中的可变参数写法: ... 1.1 可变宏函数 以日志举例,我们写入日志时只需要输入关键信息,行号文件等由宏函数补全 这其中,我们需要输入的信息是格式不定的,需要用到可变参数 输出结果: C语言库中的宏 __FILE__ :字符串,记录当前文件名 __LINE__ :整型,记录当前

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包