【C++】可变参数模板

news2024/11/26 20:34:31

2023年9月9日,周六下午

这个还是挺难学的,我学了好几天...

在这里我会举大量的示例程序,这样可以有一个更好的理解,

不定期更新。


目录

推荐文章:

示例程序一:拼接字符串

示例程序二:求整数和

示例程序三:输出一串整数


推荐文章:

这里有一些不错的相关文章 

Parameter pack(since C++11) - cppreference.com

Variadic function templates in C++ - GeeksforGeeks

Variadic templates in C++ - Eli Bendersky's website

在谷歌搜索“Variadic Template”就可以找到更多这样的文章

示例程序一:拼接字符串

#include <iostream>
#include <string>
using namespace std;


template<typename... Args>
string concatenate(Args... args) {
    string result;
    for (const auto& arg : {args...}) {
        result += arg;
    }
    return result;
}

int main() {
    cout << concatenate("Hello", " ", "world", "!") << endl; // 输出:Hello world!
    return 0;
}

示例程序二:求整数和

#include <iostream>
using namespace std;

template<typename... Args>
int sum(Args... args){
	int sum=0;
	for(const int& arg:{args...})
		sum+=arg;
	return sum;
}

int main() {
    cout <<sum(1,2,3,4,5,6,7,8,9,10) << endl; // 输出:55
    return 0;
}

示例程序三:输出一串整数

示例程序一和二是通过遍历的方式,而这个示例程序是通过递归的方式。

使用递归的方式时要注意,递归到最后时函数的参数是空的,

所以要准备额外准备好一个函数来处理这种情况。

#include <iostream>
using namespace std;

void print()
{
	cout << "最后一个元素"<<endl;
}

template <typename T, typename... Args>
void print(T first, Args... args)
{
	cout << first << endl;

	print(args...);
}

int main()
{
	print(1, 2, 3,4,5,6,7);

	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python散点图

散点图 散点图是指在回归分析中&#xff0c;数据点在直角坐标系平面上的分布图&#xff0c;散点图表示因变量随自变量而变化的大致趋势&#xff0c;据此可以选择合适的函数对数据点进行拟合。用两组数据构成多个坐标点&#xff0c;考察坐标点的分布&#xff0c;判断两变量之间…

基于Java+SpringBoot+Vue前后端分离农产品直卖平台设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

气膜建筑为什么被称为低碳环保建筑?

近年来&#xff0c;环保理念逐渐深入人心以及国家对于环境保护力度的加强&#xff0c;绿色建筑也得到了发展。其中&#xff0c;气膜建筑的建设更是进入了科技化、标准化与國际化发展时期&#xff0c;气膜建筑的使用能将建筑工程建设推向了一个新的高潮&#xff0c;使得公益性和…

业务架构图是什么?用什么软件制作比较好?

​一 业务架构图是什么&#xff1f; 1.1业务架构图简介 业务架构图是一种可视化表达方法&#xff0c;用于描述一个企业或产品的业务活动、流程、系统、数据和关系。它将业务流程、职能、数据流动以及系统之间的交互关系可视化&#xff0c;帮助人们更好地理解业务运作的全…

Claude 2,它有 GPT-4 一些无法超越的能力

文章目录 场景1&#xff1a;处理长文本场景2&#xff1a;上传文件场景3&#xff1a;进行冗长的多轮对话场景4&#xff1a;我的提示词里涉及2021年9月之后的信息 场景1&#xff1a;处理长文本 和 ChatGPT 相比&#xff0c;Claude 2 最大的优势就是它高达 10 万的 Token 数量。要…

工程可以编译通过,但是Vscode依然有波浪线提示

前言 &#xff08;1&#xff09;我们在使用Vscode进行开发的时候&#xff0c;命名文件成功编译通过了&#xff0c;但是Vscode还是有波浪线的提示。 &#xff08;2&#xff09;其实成功编译通过就行&#xff0c;但是肯定还会存在一些强迫症患者&#xff0c;硬要消除这个报错。接…

Linux Ubuntu20.04深度学习环境快速配置命令记录

1、更新系统包 sudo apt-get updatesudo apt-get upgrade 2、安装显卡驱动 使用apt方式安装驱动&#xff0c;多数情况不容易成功&#xff0c; 使用一下方法更佳&#xff1a; 1.查看合适显卡的驱动版本 ubuntu-drivers devices NVIDIA GeForce 驱动程序 - N 卡驱动 | NVI…

Qt案例-编译阿里云OSS对象存储C++ SDK源码,并进行简单下载,上传数据,显示进度等相关功能

项目中用到了阿里云OSS对象存储来保存数据&#xff0c;由于以前没用过这个库&#xff0c;就下载了C版的sdk源码重新编译了一次&#xff0c;并使用Qt调用&#xff1b;不得不说这可能是我编译源码最轻松的一次。 目录标题 简述OSS图形化管理工具编译源码Qt 添加引用常用 Endpoint…

JVM类加载和双亲委派机制

当我们用java命令运行某个类的main函数启动程序时&#xff0c;首先需要通过类加载器把类加载到JVM&#xff0c;本文主要说明类加载机制和其具体实现双亲委派模式。 一、类加载机制 类加载过程&#xff1a; 类加载的过程是将类的字节码加载到内存中的过程&#xff0c;主要包括…

基于SSM的物流管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Python判断多个文件夹的文件夹名是否包含“分公司”或“营销中心”怎么处理?(方法一)...

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 晓畅军事&#xff0c;试用于昔日。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python最强王者群【哎呦喂 是豆子&#xff5e;】问了一个Python自…

ASUS华硕天选4笔记本FX507VU FX707V原厂Win11系统

自带网卡、显卡、声卡等所有驱动、出厂主题壁纸LOGO、Office办公软件、华硕电脑管家、奥创控制中心等预装程序 链接&#xff1a;https://pan.baidu.com/s/1KwFu-39x7UJsFKN4BQMoBQ?pwdf5xa 提取码&#xff1a;f5xa

基于Java+SpringBoot+Vue前后端分离库存管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

《Graph of Thoughts: Solving Elaborate Problems with Large Language Models》中文翻译

《Graph of Thoughts: Solving Elaborate Problems with Large Language Models》- 思维图&#xff1a;用大型语言模型解决复杂的问题 论文信息摘要1. 介绍2. 背景及符号2.1 语言模型和情境学习 3. GoT 框架3.1 推理过程3.2 思想转变3.3 评分和排名思路 4. 系统架构及扩展性4.1…

深圳汇报片制作需要优先了解哪些信息

在现代社会中&#xff0c;汇报片成为了一种重要的传媒形式&#xff0c;被广泛应用于各个领域。无论是在企业、政府机构还是学术界&#xff0c;制作一部高质量的汇报片都是非常重要的。而要制作出一部成功的汇报片&#xff0c;一个合理的制作结构是至关重要的。 一个典型的汇报…

数据结构:线性表之-单向链表(无头)

目录 什么是单向链表 顺序表和链表的区别和联系 顺序表&#xff1a; 链表&#xff1a; 链表表示(单项)和实现 1.1 链表的概念及结构 1.2单链表(无头)的实现 所用文件 将有以下功能&#xff1a; 链表定义 创建新链表元素 尾插 头插 尾删 头删 查找-给一个节点的…

H.264编码及AAC编码基础

文章目录 前言一、视频编码的实现原理1、视频编码技术的基本原理2、视频编码技术的实现方法3、运动估计和补偿①、块&#xff08;Block&#xff09;与宏块&#xff08;MicroBlock&#xff09;②、I 帧、P 帧、B 帧的小结③、I 帧&#xff08;帧内编码&#xff09;④、如何衡量和…

软件测试中的43个功能测试点总结

功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。针对web系统的常用测试方法如下&#xff1a; 1、页面链接检查&#xff1a; 每一个链接是否都有对应的页面&#xff0c;并且页面之间切换正…

EasyPHP-Devserver-17安装和配置mantisBT

文章目录 1、准备工作2、安装easyphp2.1 http://127.0.0.1 无法访问 3、安装mantisBT和phpMyAdmin3.1 配置浏览器的访问url和端口号&#xff08;配置局域网内可访问&#xff09;3.2 安装mantis 4、Administrator 注册新用户时设置登录密码5、附件上传6、邮件配置 文章参考自&am…

模型推理后处理C++代码优化案例

文章目录 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a;小结 项目场景&#xff1a; 经过推理的后处理运行时间的优化。 先来看下优化前后的时间对比&#xff1a; 优化前&#xff1a; 优化后&#xff1a; 提升还是很大的。 问题描述 模型推理后得…