模板(进阶)

news2024/11/16 6:24:01

文章目录

    • 1.非类型模板参数
      • 1.1 定义:
      • 1.2 应用:
    • 2.模板特化(特化必须原模版)
      • 2.1类模板特化
      • 2.2 函数模板特化
    • 3模板的分离编译
      • 3.1 什么是分离编译
      • 3.2模板不能实现分离编译的原因(简):
      • 3.3解决方法
        • 实例化
          • 显示实例化
            • 函数的显示实例化
            • 模板的显示实例化
            • 函数的隐示实例化
            • 类的隐示实例化

1.非类型模板参数

1.1 定义:

本质:常量;
在这里插入图片描述
这里不可以传变量
** 该参数应用范围较少;多用于数组的下表访问**
在这里插入图片描述
这里传整形家族都可以:char或int;

1.2 应用:

array类
在这里插入图片描述
array的应用:
在这里插入图片描述
两者在物理上完全一样;
两者的区别
在这里插入图片描述
array可以预防越界访问;
原因:
在这里插入图片描述
前者是指针的解引用;
后者则是【】函数的调用;(“【】”的函数会检查是否越界)

2.模板特化(特化必须原模版)

2.1类模板特化

特化分为:全特化;偏特化;
偏特化又分为指针偏特化和部分特化和引用偏特化;
全特化
在这里插入图片描述
偏特化
部分特化,指针特化
偏特化
引用特化
在这里插入图片描述
在这里插入图片描述

匹配遵循最匹配原则

2.2 函数模板特化

函数名后加特化的类型
在这里插入图片描述
函数模板不建议使用模板特化:
在这里插入图片描述
由于函数传参数时多传const类型的导致特化较为繁琐;
解决方法:
使用函数重定义
在这里插入图片描述
在这里插入图片描述

3模板的分离编译

3.1 什么是分离编译

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链
接起来形成单一的可执行文件的过程称为分离编译模式。

3.2模板不能实现分离编译的原因(简):

由于每个.cpp文件都会进行预处理;编译;汇编;链接;
每个项目都会有两个或两个以上的文件;其中会有.h文件和cpp文件;这里的cpp文件都进行预处理;编译;汇编;链接;
这里的预处理会将.h文件进入.cpp文件。这里的cpp文件可以分为主文件和函数文件;如果这里的使用了函数模板;函数文件包含模板的声明和定义但是没有实例化;这就使这个函数没有被分配空间;也就没有函数地址;在主函数中函数调用时发现声明;这告诉编译器函数体在其他文件,要等到链接时再找;但是在链接时包含其他文件内只有模板的定义和声明
没有产生特定的一个lei或函数的地址;所以发生l链接错误
详细讲解

3.3解决方法

1.将声明和定义写在一起
2.在cpp文件内进行模板的实例化;

实例化
显示实例化
函数的显示实例化

tempate +函数定义(返回值+函数模板名+<类型>+返回值)

模板的显示实例化

tempate++类定义(class+类名+<类型>())

函数的隐示实例化

函数名+(实参)

类的隐示实例化

类名+<类型>+变量

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VBA技术资料MF72:利用函数判断文件及工作表存在

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

初始c++(2)

目录 目录&#xff1a; 1. 引用 2. 内联函数inline 3.auto关键字(大概的认识) 4.基于范围的for循环(c11) 5.nullptr(c11) 本章最重要的知识点其实是前两个(详细讲解),后面的大概只会介绍一下用法。 文章开始&#xff01;&#xff01;&#xff01;&#xff01; 1&#xff1a;引…

微信小程序授权登录介绍

目录 一. 小程序登录如何获取微信用户信息 二. 小程序微信授权登录示例 后台代码 小程序代码 效果展示 三. 微信emoji存储问题 一. 小程序登录如何获取微信用户信息 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小程序内…

【ArcGIS模型构建器】01:模型构建器Model Builder介绍

文章目录 一、 空间建模概述1. 空间建模概述2. 空间建模步骤 二、Model Builder建模1. Model Builder基础2. Model Builder操作3. Model Builder高级进阶操作 一、 空间建模概述 1. 空间建模概述 空间建模的目的是解决与地理有关的问题&#xff0c;通常涉及多种空间分析操作的…

100097. 合法分组的最少组数

给你一个长度为 n 下标从 0 开始的整数数组 nums 。 我们想将下标进行分组&#xff0c;使得 [0, n - 1] 内所有下标 i 都 恰好 被分到其中一组。 如果以下条件成立&#xff0c;我们说这个分组方案是合法的&#xff1a; 对于每个组 g &#xff0c;同一组内所有下标在 nums 中…

一天吃透Java面试题

给大家分享我整理的Java高频面试题&#xff0c;有小伙伴靠他拿到字节offer了。 Java基础面试题 Java的特点Java 与 C 的区别JDK/JRE/JVM三者的关系Java程序是编译执行还是解释执行&#xff1f;面向对象和面向过程的区别&#xff1f;面向对象有哪些特性&#xff1f;数组到底是…

代码最佳实践和指南(一)

创建代码是许多数据专业的重要组成部分。但是&#xff0c;创建可以运行的代码只是工作的一半。代码还需要清晰&#xff0c;易于传递&#xff0c;并且对干扰具有鲁棒性。通过在项目中遵循一些编码准则&#xff0c;您可以保存自己以后重新构造代码的时间&#xff0c;并使您的合作…

(完全解决)如何输入一个图的权重,然后使用sklearn进行谱聚类

文章目录 背景输入点直接输入邻接矩阵 背景 网上倒是有一些关于使用sklearn进行谱聚类的教程&#xff0c;但是这些教程的输入都是一些点的集合&#xff0c;然后根据谱聚类的原理&#xff0c;其会每两个点计算一次亲密度&#xff08;可以认为两个点距离越大&#xff0c;亲密度越…

知识分享|分段函数线性化及matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

为什么短信验证码要设置有效期?

安全性&#xff1a;验证码的主要目的是为了验证用户的身份&#xff0c;防止恶意或未经授权的访问。如果验证码没有有效期&#xff0c;恶意用户或攻击者可以获取验证码后无限期地尝试使用它。通过设置有效期&#xff0c;可以限制验证码的生命周期&#xff0c;提高系统的安全性。…

Selenium的find_element()与find_elements()和By的几种方法

打印索引元素的文本属性 def print_list(coordinate_list):print(当前项目地块数&#xff1a;, len(coordinate_list))for i in range(0, len(coordinate_list)):print(i)print(coordinate_list[i].text)看一下By支持的方法 class By:"""Set of supported loc…

02-HotSpot 虚拟机对象探秘

HotSpot 虚拟机对象探秘 对象的内存布局 在 HotSpot 虚拟机中&#xff0c;对象的内存布局分为以下 3 块区域&#xff1a; 对象头&#xff08;Header&#xff09;实例数据&#xff08;Instance Data&#xff09;对齐填充&#xff08;Padding&#xff09; 对象头 对象头记录…

基于ResNet34的花朵分类

一.数据集准备 新建一个项目文件夹ResNet&#xff0c;并在里面建立data_set文件夹用来保存数据集&#xff0c;在data_set文件夹下创建新文件夹"flower_data"&#xff0c;点击链接下载花分类数据集https://storage.googleapis.com/download.tensorflow.org/example_i…

localforage-本地存储的优化方案

前言 前端本地化存储算是一个老生常谈的话题了&#xff0c;我们对于 cookies、Web Storage&#xff08;sessionStorage、localStorage&#xff09;的使用已经非常熟悉&#xff0c;在面试与实际操作之中也会经常遇到相关的问题&#xff0c;但这些本地化存储的方式还存在一些缺陷…

【CSS】BFC 块级格式化上下文

1. 块级格式化上下文&#xff08;BFC&#xff09; 它是一块独立的渲染区域&#xff0c;规定该区域内&#xff0c;常规流块盒的布局。 先来说一下常规流块盒&#xff1a; 常规流块盒在水平方向上&#xff0c;必须盛满包含块常规流块盒在包含块的垂直方向上依次摆放常规流块盒…

「我的AIGC咒语库:分享和AI对话交流的秘诀——如何利用Prompt和AI进行高效交流?」

文章目录 每日一句正能量前言基础介绍什么是Prompt?什么是 Prompt Engineering&#xff1f;为什么需要 Prompt Engineering&#xff1f;如何进行 Prompt Engineering&#xff1f;Prompt的基本原则Prompt的编写模式AI 可以帮助程序员做什么&#xff1f;技术知识总结拆解任务阅读…

2022年全国部分省市跨境电商交易规模汇总

近年来&#xff0c;跨境电商发展迅速&#xff0c;国家陆续出台了相关支持政策&#xff0c;跨境电商优势和潜力有望进一步释放。海关总署数据&#xff0c;根据初步测算&#xff0c;2022年我国跨境电商进出口2.11万亿元&#xff0c;增长9.8%。其中&#xff0c;出口1.55万亿元&…

ATX Power Supply

Pinout 20 PIN MOLEX 39-29-9202 at the motherboard 20 PIN MOLEX 39-01-2200 at the cable PinNameColorDescription13.3VOrange+3.3 VDC23.3VOrange+3.3 VDC3COMBlackGround45VRed+5 VDC

哈夫曼树、哈夫曼编码/解码

哈夫曼树 哈夫曼树的基本介绍 哈夫曼树构建步骤图解 创建哈夫曼树代码实现 """ 创建哈夫曼树 """ class EleNode:""" 节点类 """def __init__(self, value: int):self.value valueself.left None # 指向左子…

新加坡攻略

文章目录 基础信息入境行李App电信交通餐饮购物法规旅游牛车水&#xff08;Chinatown&#xff09;克拉码头&#xff08;Clarke Quay&#xff09;东海岸&#xff08;East Coast&#xff09;丹戎巴葛&#xff08;Tanjong Pagar&#xff09;滨海湾&#xff08;Marina Bay&#xff…