模板声明的两种形式:template<int N> 和 template<N>
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 在这种情况下代表一个类型占位符,但需要你用 typename 或 class 来修饰它以表示它是一个类型参数。
示例(typename 用法):
template<typename N>
struct Wrapper {
N value; // N 是一个类型
};
int main() {
Wrapper<int> w; // N 是 int 类型
w.value = 10;
}
这里的 N 代表一个类型占位符,模板实例化时,你需要为 N 提供一个具体的类型,例如 int、float 等。
示例(class 用法):
template<class N>
struct Wrapper {
N value; // N 是一个类型
};
int main() {
Wrapper<double> w; // N 是 double 类型
w.value = 3.14;
}
在 C++ 中,typename 和 class 可以互换使用来声明类型模板参数。
特点:
template<N>中的N必须用typename或class来声明为一个类型参数。N在模板中表示一个类型,而不是具体的值。
总结:
template<int N>:用于非类型模板参数,N必须是一个常量(例如整数、枚举、指针等),实例化时需要传递一个具体的值。template<N>:表示一个类型模板参数,但它必须用typename或class修饰,N代表一个类型,实例化时需要传递一个具体的类型。
因此,template<int N> 和 template<N> 的区别在于,前者用来接收常量值,后者用来接收类型,且后者需要额外的关键字修饰。
模板声明的两种形式:template<int N> 和 template<N>的更多相关文章
- C++:一般情况下,设计函数的形参只需要两种形式
C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...
- SQL 关于apply的两种形式cross apply 和 outer apply(转)
转载链接:http://www.cnblogs.com/shuangnet/archive/2013/04/02/2995798.html apply有两种形式: cross apply 和 oute ...
- SQL 关于apply的两种形式cross apply 和 outer apply
SQL 关于apply的两种形式cross apply 和 outer apply 例子: CREATE TABLE [dbo].[Customers]( ) COLLATE Chinese_PRC_ ...
- SQL关于apply的两种形式cross apply和outer apply(转载)
SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: <lef ...
- 转:SQL 关于apply的两种形式cross apply 和 outer apply
原文地址:http://www.cnblogs.com/Leo_wl/archive/2013/04/02/2997012.html SQL 关于apply的两种形式cross apply 和 out ...
- SQL 关于apply的两种形式cross apply 和 outer apply, with cube 、with rollup 和 grouping
1). apply有两种形式: cross apply 和 outer apply先看看语法: <left_table_expression> {cross|outer} apply &l ...
- AngularJS的日期格式化有两种形式
AngularJS的日期格式化有两种形式,一种是在HTML页面,一种是在JS代码里,都是用到AngularJS的过滤器$filter. HTML: date_expression 即 你在$scope ...
- MyBatis collection的两种形式——MyBatis学习笔记之九
与association一样,collection元素也有两种形式,现介绍如下: 一.嵌套的resultMap 实际上以前的示例使用的就是这种方法,今天介绍它的另一种写法.还是以教师映射为例,修改映射 ...
- jquery插件的两种形式
这里总结一下jquery插件的两种形式,一种是通过字面量的形式组织代码,另一种是通过构造函数的方式.下面就两种形式来分析俩个例子. 例子1: ;(function ($,window,document ...
- 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编
在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...
随机推荐
- java的自动拆箱会发生NPE
平时的小细节,总能在关键时刻酿成线上事故,最近在代码中使用了Integer的自动拆箱功能,结果NPE(NullPointException)了,悲剧啊... 一.何为自动拆箱 要说自动拆箱,就必须说自 ...
- leetcode2397. 被列覆盖的最多行数 回溯法/枝剪
第一次手搓一个回溯法,超时后采用枝剪勉强通过 class Solution { int max=0; int numSelect; public int maximumRows(int[][] mat ...
- 关于npm ERR! 的一个解决方案
最近在网上找了一个js写的项目,npm下载某些组件总是失败,后经学习了解到了cnpm.使用cnpm时就都可以正常下载,但是下载完成之后程序无法正常启动,所以cnpm下载也是失败的. 后面我经过自己手动 ...
- NPIO在指定位置插入新列(附案例和代码)
背景: I could be mistaken as I am not that familiar with NPOI, however, after a minor search, it appea ...
- 06 定时器和PWM(1)
前言 前面介绍了一下外部中断,这一节主要介绍一下内部定时器和PWM,这两个知识还是比较重要的. 一.定时器 1.什么是定时器 定时器其实和计数器一样,我们通过设置一个值,当计数器运行一个计数寄存器向上 ...
- Apache COC闪电演讲总结【OSGraph】
大家能看到我最近一直在折腾与OSGraph这个产品相关的事情,之前在文章<妙用OSGraph:发掘GitHub知识图谱上的开源故事>中向大家阐述过这个产品的设计理念和应用价值.比方说以下问 ...
- 压力测试工具httperf使用方法
目录 压力测试工具httperf使用方法 通过tar zxvf解压httperf-0.9.0.tar.gz 进入目录 安装c++编译环境 开始编译 进入编译后的bin目录 开始测试 压力测试工具htt ...
- 【Vue】Re01 理论概念和入门上手
一.Vue概述 什么是渐进式?1.把Vue作应用的一部分嵌套项目中2.如果完全抛弃其他组件和框架,Vue又具有丰富的生态和库莱支持3.Core + Router + VueX 满足项目绝大多数的需求- ...
- kaggle上的jax框架的环境配置(TPU版本)
导出时间: 2024-01-18 21:00:37 星期四 python版本: Python 3.10.13 absl-py==1.4.0 accelerate==0.25.0 aiofiles==2 ...
- 【转载】 DQN玩Atari游戏安装atari环境bug指南
版权声明:本文为CSDN博主「好程序不脱发」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/ningmengzh ...