模板声明的两种形式: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只熟悉两种编 ...
随机推荐
- c++17
std::variant<std::string,int,float>://作为联合体 using va = std::variant<std::string, int, float ...
- pytest批量执行多个测试文件(批量执行一个文件夹下的所有测试用例)
图片 代码 #!/usr/bin/env python # @File : test_runall.py import pytest import os # path = os.path.dirnam ...
- 图解翻转单向链表,超详细(python语言实现)
节点类: 1 class ListNode(object): 2 def __init__(self, x): 3 self.val = x 4 slef.next = None 反转单向链表的函数如 ...
- mysql DCL常用命令
登录数据库: mysql -u root -p 查看本机MySQL中所有的用户 select user ,host from mysql.user; 查看所有数据库: show databases; ...
- P1973 [NOI2011] NOI 嘉年华
思路: 先将时间进行离散化,设总时间为 \(cnt\),然后考虑求出 \(W(l,r)\),即在时间段 \([l,r]\) 内的所有节目,可以 \(n^2\) 前缀和,也可以 \(n^3\) 暴力. ...
- 神经网络之卷积篇:详解计算机视觉(Computer vision)
详解计算机视觉 计算机视觉是一个飞速发展的一个领域,这多亏了深度学习.深度学习与计算机视觉可以帮助汽车,查明周围的行人和汽车,并帮助汽车避开它们.还使得人脸识别技术变得更加效率和精准,即将能够体验到或 ...
- Jmeter函数助手-自带函数汇总
Jmeter函数助手自带函数汇总(Jmeter官网-函数助手详解:https://jmeter.apache.org/usermanual/functions.html) BeanShell:用于简单 ...
- 【MySQL】29 索引
MySQL是一个关系型的数据库 使用标准的SQL数据格语言格式 支持大型数据库,处理千万级别的记录数据 允许多系统运行,支持多种编程语言连接 最重要的一点是MySQL允许定制,采用GPL协议,允许修改 ...
- 人类社会学:“重男轻女"思潮的比重,从多孩男女性别比角度思考
参考资料: https://baijiahao.baidu.com/s?id=1780697594797038227 https://mbd.baidu.com/newspage/data/video ...
- 【转载】 DQN玩Atari游戏安装atari环境bug指南
版权声明:本文为CSDN博主「好程序不脱发」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/ningmengzh ...