模板声明的两种形式:templateint N 和 templateN

template<int N>:非类型模板参数

template<int N> 是一个典型的非类型模板参数的例子。这里的 N 是模板的参数,但它不是一个类型,而是一个具体的整数值。这意味着,当你实例化模板时,你必须为 N 提供一个常量整数值

示例:

template<int N>
struct Array {
int data[N]; // 创建一个大小为 N 的数组
};

int main() {
Array<5> arr; // N = 5,创建一个大小为 5 的数组
}

在这个例子中,N 是一个模板参数,它必须是一个整数。模板实例化时,N 的值会被替换到模板定义中。

特点:

  • template<int N> 中的 N 是一个非类型模板参数,表示一个常量值,比如整数、指针或枚举值。
  • 编译时必须提供一个常量来实例化模板。

2. template<N>:占位符,需结合类型声明

template<N> 本身是不完整的,不能单独使用。N 在这种情况下代表一个类型占位符,但需要你用 typenameclass 来修饰它以表示它是一个类型参数。

示例(typename 用法):

template<typename N>
struct Wrapper {
N value; // N 是一个类型
};

int main() {
Wrapper<int> w; // N 是 int 类型
w.value = 10;
}

这里的 N 代表一个类型占位符,模板实例化时,你需要为 N 提供一个具体的类型,例如 intfloat 等。

示例(class 用法):

template<class N>
struct Wrapper {
N value; // N 是一个类型
};

int main() {
Wrapper<double> w; // N 是 double 类型
w.value = 3.14;
}

在 C++ 中,typenameclass 可以互换使用来声明类型模板参数。

特点:

  • template<N> 中的 N 必须用 typenameclass 来声明为一个类型参数。
  • N 在模板中表示一个类型,而不是具体的值。

总结:

  • template<int N>:用于非类型模板参数N 必须是一个常量(例如整数、枚举、指针等),实例化时需要传递一个具体的值。
  • template<N>:表示一个类型模板参数,但它必须用 typenameclass 修饰,N 代表一个类型,实例化时需要传递一个具体的类型。

因此,template<int N>template<N> 的区别在于,前者用来接收常量值,后者用来接收类型,且后者需要额外的关键字修饰。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu下stlink烧录stm32代码

ubuntu下stlink烧录stm32代码ubuntu下stlink烧录stm32代码,记录备忘 0、环境一、下载stlink驱动 二、编译 三、 安装stlink驱动 四、验证安装成功 usb口接stlink后,查到设备五、 烧录 六、其它

高等数学 2.2 函数的求导法则

目录1、常数和基本初等函数的导数公式2、函数的和、差、积、商的求导法则3、反函数的求导法则4、复合函数的求导法则 1、常数和基本初等函数的导数公式公式 公式(1) \((C) = 0\) (2)\((x^{\mu}) = \mu x^{\mu - 1}\)(3)\((\sin x) = \cos x\) (4)\((\cos x) = - \sin x…

自尽氚气出题人+rui 之 氚荠甲苯二酸 代码

运输计划 显然我们可以处理出每个区间正方向和反方向走的代价,那么最后的问题可以转化为每个点选择 \(0/1\) 之一,要求区间的选择两两不冲突,在这个基础上最小化代价之和。 则,可以参考 \(2-SAT\) 的思路,处理出每个点选择 \(0/1\) 两两的限制状况,不难发现这种限制应该是…

十一,Spring Boot 当中配置拦截器的“两”种方式

十一,Spring Boot 当中配置拦截器的“两”种方式 @目录十一,Spring Boot 当中配置拦截器的“两”种方式1. 准备工作:2. Spring Boot当中配置拦截器的第一种方式:通过配置类的方式3. Spring Boot 当中配置拦截器的第二种方式:4. 补充:URI 和 URL 的区别5. 总结:6. 最后:…

PbootCMS常用公司信息标签调用

以下是 PbootCMS 常用公司信息标签的表格形式,方便查阅和使用:标签名 描述 示例代码{pboot:companyname} 公司名称 {pboot:companyname}{pboot:companyaddress} 公司地址 {pboot:companyaddress}{pboot:companypostcode} 邮政编码 {pboot:companypostcode}{pboot:companycont…

Electric Power

Power How Batteries Work电池提供给外面稳定的电压氧化反应,电压会逐渐减少,知道不能给设备供电。USB PD(Power Delivery) ref:https://www.usbzh.com/article/detail-479.html USB Types Type A, Type B vs Type CType C:reversible bi-directional power capabilities bet…

记忆力训练:解锁大脑潜能的钥匙

记忆力训练:解锁大脑潜能的钥匙 在快节奏的现代生活中,良好的记忆力成为了我们学习、工作乃至日常生活中不可或缺的能力。无论是背诵长篇课文、记忆复杂数据,还是快速回顾过往经历,强大的记忆力都能让我们事半功倍。然而,随着年龄的增长和生活压力的增加,许多人发现自己的…

PbootCMS做英文站面包屑“首页”怎么处理

在使用 PbootCMS 构建英文站点时,需要将面包屑中的“首页”文字改为英文“Home”。可以通过设置面包屑标签的参数来实现这一需求。 面包屑标签 标签格式:html{pboot:position}参数说明:separator=*:分隔符,默认为 >>。 separatoricon=*:分割图标,默认为空,如使用…

PbootCMS栏目页如何调用当前栏目的文章

要在栏目页调用当前栏目的文章,可以使用 PbootCMS 提供的 {pboot:list} 标签。以下是如何在栏目页调用当前栏目的文章的具体方法。 1. 栏目页调用当前栏目的文章 假设你需要在栏目页调用当前栏目的文章,可以使用以下代码:{pboot:list num=10 scode={sort:scode} page=0}<…

运行PbootCMS系统有哪些环境要求?

为了确保 PbootCMS 系统能够顺利安装和运行,以下列出了 PbootCMS 的基本运行环境要求: 1. PHP 版本要求最低要求:PHP 5.4+ 推荐版本:支持最新的 PHP 7.0、7.1、7.2 兼容性:由于 PbootCMS 支持 SQLite 和 MySQL 数据库,因此即使空间没有配置 MySQL,也可以使用 SQLite 方式…

PbootCMS配置留言发送到QQ邮箱教程

要在 PbootCMS 中配置留言发送到 QQ 邮箱,可以按照以下步骤进行操作: 1. 登陆 QQ 邮箱,找到设置 > 账户登录 QQ 邮箱:打开 QQ 邮箱。进入设置 > 账户:在 QQ 邮箱首页右上角点击“设置”,然后选择“账户”。2. 开启 SMTP 服务找到 SMTP 服务设置:在账户设置页面向下…