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> 的区别在于,前者用来接收常量值,后者用来接收类型,且后者需要额外的关键字修饰。

模板声明的两种形式:template<int N> 和 template<N>的更多相关文章

  1. C++:一般情况下,设计函数的形参只需要两种形式

    C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...

  2. SQL 关于apply的两种形式cross apply 和 outer apply(转)

    转载链接:http://www.cnblogs.com/shuangnet/archive/2013/04/02/2995798.html apply有两种形式: cross apply 和 oute ...

  3. SQL 关于apply的两种形式cross apply 和 outer apply

    SQL 关于apply的两种形式cross apply 和 outer apply 例子: CREATE TABLE [dbo].[Customers]( ) COLLATE Chinese_PRC_ ...

  4. SQL关于apply的两种形式cross apply和outer apply(转载)

    SQL 关于apply的两种形式cross apply 和 outer apply   apply有两种形式: cross apply 和 outer apply   先看看语法:   <lef ...

  5. 转:SQL 关于apply的两种形式cross apply 和 outer apply

    原文地址:http://www.cnblogs.com/Leo_wl/archive/2013/04/02/2997012.html SQL 关于apply的两种形式cross apply 和 out ...

  6. SQL 关于apply的两种形式cross apply 和 outer apply, with cube 、with rollup 和 grouping

    1). apply有两种形式: cross apply 和 outer apply先看看语法: <left_table_expression> {cross|outer} apply &l ...

  7. AngularJS的日期格式化有两种形式

    AngularJS的日期格式化有两种形式,一种是在HTML页面,一种是在JS代码里,都是用到AngularJS的过滤器$filter. HTML: date_expression 即 你在$scope ...

  8. MyBatis collection的两种形式——MyBatis学习笔记之九

    与association一样,collection元素也有两种形式,现介绍如下: 一.嵌套的resultMap 实际上以前的示例使用的就是这种方法,今天介绍它的另一种写法.还是以教师映射为例,修改映射 ...

  9. jquery插件的两种形式

    这里总结一下jquery插件的两种形式,一种是通过字面量的形式组织代码,另一种是通过构造函数的方式.下面就两种形式来分析俩个例子. 例子1: ;(function ($,window,document ...

  10. 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编

    在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...

随机推荐

  1. python 音频处理(1)——重采样、音高提取

    采集数据->采样率调整 使用torchaudio进行重采样(cpu版) 首先导入相关包,既然使用torch作为我们的选项,安装torch环境我就不必多说了,如果你不想用torch可以使用后文提到 ...

  2. 【Vue】单元格合并,与动态校验

    效果要求 先看需求效果: 多个数据授权项,配置的时候,业务名称大多数都是一样的,需要合并单元格处理 在elementUI组件文档中有说明[合并列行]: https://element.eleme.io ...

  3. 【Windows】(USB热点连接)使用手机给主机提供热点连网

    1.问题起源 昨天跟和几个哥们一起装机,发现安装好的系统, 直连网卡提示安装成功,但是网络设置显示未连接 找不到其他原因的办法下,我们看能不能使用手机对电脑进行连网 2.解决过程 我想到的是,先从手机 ...

  4. 【Layui】07 徽章 Badge

    文档地址: https://www.layui.com/demo/badge.html 圆点徽章: <span class="layui-badge-dot">< ...

  5. 机器人控制与图网络( 利用关系归纳偏置改善泛化和控制)—— Robotic Control with Graph Networks——Exploiting relational inductive bias to improve generalization and control

    英文原文: https://towardsdatascience.com/robotic-control-with-graph-networks-f1b8d22b8c86 强化学习算法是不是另一种形式 ...

  6. 读论文《Distilling the Knowledge in a Neural Network》——蒸馏网络 —— 蒸馏算法 —— 知识蒸馏 中的温度系数到底怎么用, temperature怎么用?

    论文地址: https://arxiv.org/pdf/1503.02531.pdf 蒸馏网络的重要公式: 其中,\(p^g\)为Teacher网络,\(q\)为Student网络. 个体神经网络(C ...

  7. python报错:pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"

    运行python代码报错: 问题发现: 问题其实十分的狗血,这个代码是在服务器上运行的,运行之前其实并没有看具体的代码情况,git clone 下载下来就直接运行了,原来这个代码需要进行图片绘制,说直 ...

  8. 记一次 .NET某智慧出行系统 CPU爆高分析

    一:背景 1. 讲故事 前些天有位朋友找到我,说他们的系统出现了CPU 100%的情况,让你帮忙看一下怎么回事?dump也拿到了,本想着这种情况让他多抓几个,既然有了就拿现有的分析吧. 二:WinDb ...

  9. canvas实现手动绘制矩形

    开场白 虽然在实际的开发中我们很少去绘制流程图 就算需要,我们也会通过第3方插件去实现 下面我们来简单实现流程图中很小的一部分 手动绘制矩形 绘制一个矩形的思路 我们这里绘制矩形 会使用到canvas ...

  10. Go 链路追踪入门 Opentelemetry

    前言 Opentelemetry 分布式链路跟踪( Distributed Tracing )的概念最早是由 Google 提出来的,发展至今技术已经比较成熟,也是有一些协议标准可以参考.目前在 Tr ...