首页 > 其他分享 >模板声明的两种形式:template<int N> 和 template<N>

模板声明的两种形式:template<int N> 和 template<N>

时间:2024-09-14 15:51:23浏览次数:1  
标签:int 一个 参数 template 类型 声明 模板

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

标签:int,一个,参数,template,类型,声明,模板
From: https://www.cnblogs.com/18036363544cy/p/18414210

相关文章

  • constexpr声明 常量表达式
     constexpr是C++中用于声明常量表达式的关键字,表示一个变量或函数的值在编译时就可以确定,而不是在运行时计算。这对优化非常有用,因为编译器可以直接将结果嵌入到程序中,减少运行时的开销。通俗解释:变量篇:如果你有一个constexpr变量,它的值在编译时就已经固定好......
  • 可筛选的课程表设计excel表格@在线写作共享表格课程表设计模板参考
    文章目录abstract表格任务1.时间段与课次安排2.课程种类多样3.教师与教室安排4.课程颜色编码5.课表标注参考方案:样式预览全表添加不影响筛选列的跨列显示内容方案1方案2(pass)针对指定老师筛选并生成课表......
  • PbootCMS设置当前站点模板,模板子目录,黑白名单,敏感词过滤
    在PBootCMS中,后台操作涉及多个配置项,包括更换模板路径、配置后台模板子目录、配置后台黑名单和白名单以及敏感词过滤。下面是详细的步骤和说明。1.更换模板路径步骤进入站点信息页面:登录PBootCMS后台。导航至 【基础内容】-【站点信息】-【站点模板】。选择模板......
  • 208. 实现 Trie (前缀树)||Trie字典树模板
    题目:https://leetcode.cn/problems/implement-trie-prefix-tree/description/以前的板子写得太丑陋了,重新写一份><因为是leetcode上的题目,所以是核心代码模式。字典树(Trie)原理:(因为我语言表达能力不行,所以以下内容来源于小美AI机器人><)字典树(Trie)是一种用于高效存储和检索字......
  • PbootCMS模板中那些url怎么调用
    在PBootCMS中,httpurl、pageurl 和 sitedomain 标签用于获取当前站点的相关网址信息。以下是详细的使用说明和示例代码。1.当前站点网址标签说明{pboot:httpurl}:自适应获取当前访问网址,主要用于需要使用网站路径前缀的情况。示例输出plaintext https://www.xxx.......
  • PbootCMS模板自动生成当前页面二维码
    在PBootCMS中,qrcode 标签用于生成对应文本的二维码图片。这对于产品列表页或详情页为每个产品生成二维码非常有用。以下是详细的使用说明和示例代码。1. qrcode 标签的基本用法参数说明string=*:指定生成二维码的文本内容。2.示例代码生成产品详情页的二维码假设你需......
  • 怎么安装使用PbootCMS网站模板
    安装和使用PBootCMS网站模板的过程主要包括以下几个步骤:1.下载模板访问PBootCMS官网或其他可信来源下载你所需的模板文件。确认下载的模板兼容你的PBootCMS版本。2.上传模板将下载好的模板文件上传到你的服务器或虚拟主机。通常模板文件会被压缩,上传之后需要解压到正确......
  • pbootcms模板时间格式调用方法详解
    在PBootCMS中,时间调用主要通过date标签来实现。以下是一些常用的调用方法及其效果示例:列表页时间调用默认格式:[list:date]效果:2021-12-0609:12:30年月日格式:[list:datestyle=Y-m-d]效果:2021-12-06年格式:[list:datestyle=Y]效果:2021月日格式:[list:da......
  • 基于Uni-app前端框架的SUMER UI3.0组件库!一端开发,多端运行!本组件库可快速二次开发各种
    基于Uni-app前端框架的SUMERUI3.0组件库!一端开发,多端运行!本组件库可快速二次开发各种类别各行业模板,包括:商城、视频、直播、聊天、支付、新闻、社区、地图、导航、出行、社区、博客等sumer-ui介绍基于uView微信小程序UI组件库,兼容vue3。本插件是SUMER组件库,只提供组件......
  • WPF Datagrid DataGridTemplateColumn.CellTemplate local:ImageTextblock ImgUrl="{
    DataGridTemplate.CellTemplatecontainsonedatatemplaewilldisplaythecustomoizedcontrol,thekeylocatedatthecustomcontrol'sdependencypropertybindingandrelativesourceofx:typedatagridrow<local:ImageTextblockImgUrl="{Binding......