当前位置: 首页 > news >正文

C++学习笔记(19)——模板


目录

模板参数与非类型模板参数

模板参数

类型模板参数——传递类型

非类型模板参数——传递数量

C++11希望array替代静态数组,但实际上vector包揽了一切

模板总结

优点:

缺点:

模板特化:针对某些类型进行特殊化处理

特化


  1. 模板参数与非类型模板参数

    • 模板参数

      • 类型模板参数——传递类型

        • 传递一些参数(int,double等变量类型)到类的模板,这些参数的类型信息被选择性摘取用于构建一个类,这些参数不占用空间
      • 非类型模板参数——传递数量

        • 当我们构建模板时想要设置一些静态空间,这时候我们可以传递非类型模板参数;
        • 传递一些参数(100等整形变量类型,它被专门用来定义静态数据类型,开静态的空间.
          • C++20允许各种变量类型了C++.98只允许整形)到类的模板,这些参数常用明确于成员变量开空间的规格,这些参数参与的开空间占用空间
        • 这里的“非类型”是指这些“模板参数”他们不参与类型性质的构建,他们只是提供一个数量规格
        • “非类型模板参数”得是常量,否则编译不通过
    • 知识点

      • array数组,本质是一个函数的调用;
      • C语言的数组本质是指针的解引用,数组越界是随机抽查,可能检查不出来;
      • 设计之初C++11希望array替代静态数组,但实际上vector包揽了一切;

  • 模板总结

    • 优点

      • 1.复用代码,节约资源,加速迭代开发,C++标准模板库(STL)因此产生
      • 2.增强代码灵活性
    • 缺点

      • 1.模板会导致代码膨胀问题,也会导致编译时间变长;
      • 2.出现模板编译错误时,错误信息非常混乱,不易定位错误;(出错的逻辑会因为逻辑的嵌套而难以发觉)
        • 经验:出错了看第一个错误,一般大量错误都是由第一个错误,或者逻辑前面没有报错的代码错误了。

  • 模板特化:针对某些类型进行特殊化处理

    • 在有通用模板的前提下,针对特殊的模板参数组合我们单独去为其建立一个类模板;
    • 针对特定的模板参数在通用模板运行时功能失效的情况,我们可以通过模板特化,构建一个特定的模板去处理他;
    • 特化

      • 全特化:特化全部参数
      • 偏特化(半特化):特化部分参数
      • 特化也可以使用模板template<class T>

相关文章:

C++学习笔记(19)——模板

目录 模板参数与非类型模板参数 模板参数 类型模板参数——传递类型 非类型模板参数——传递数量 C11希望array替代静态数组&#xff0c;但实际上vector包揽了一切 模板总结 优点&#xff1a; 缺点&#xff1a; 模板特化&#xff1a;针对某些类型进行特殊化处理 特化…...

java8新特性——函数式编程详解

目录 一 概述1.1 背景1.2 函数式编程的意义1.3 函数式编程的发展 Lambda表达式1.1 介绍1.2 使用Lambda的好处1.3 Lambda方法1.3.1 Lambda表达式结构1.3.2 Lambda表达式的特征 1.4 Lambda的使用1.4.1 定义函数式接口1.4.2 Lambda表达式实现函数式接口1.4.3 简化Lambda表达式1.4.…...

mybatis-plus小课堂: apply 拼接 in SQL,来查询从表某个范围内的数据

文章目录 引言I mybatis-Plus 之 apply 拼接 in SQL1.1 apply源码实现1.2 apply 拼接 in SQL : 非字符串数组1.3 apply 拼接 in SQL : 字符串数组II 如果in的数量太多,采用子查询。III 常见问题: Cause: comColumn xxx in where clause is ambiguoussee also引言 I mybati…...

民宿推荐系统-手把手调试搭建

民宿推荐系统-手把手调试搭建 民宿推荐系统-手把手调试搭建...

线性回归模型

目录 1.概述 2.线性回归模型的定义 3.线性回归模型的优缺点 4.线性回归模型的应用场景 5.线性回归模型的未来展望 6.小结 1.概述 线性回归是一种广泛应用于统计学和机器学习的技术&#xff0c;用于研究两个或多个变量之间的线性关系。在本文中&#xff0c;我们将深入探讨…...

西门子全球业务调整:数十亿欧元交易额,开启新篇章

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 在风起云涌的全球经济舞台上&#xff0c;西门子&am…...

AI遇上遥感,未来会怎样?

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…...

认知架构 cognitive architecture

Assistants API&#xff1a;以开发人员为中心。 有状态的API&#xff1a;允许存储以前的消息、上传文件、访问内置工具&#xff08;代码解释器&#xff09;、通过函数调用控制其他工具。 认知架构应用的两个组件&#xff1a;&#xff08;1&#xff09;如何提供上下文给应用 &…...

数据插值之朗格朗日插值(一)

目录 一、引言 二、代码实现 2.1 Lagrange插值求插值多项式&#xff1a; 代码解析&#xff1a; 1.vpa解释 2.ploy&#xff08;x&#xff09;解释: 3.conv&#xff08;&#xff09;解释 4.poly2sym()解释 2.2 Lagrange插值求新样本值和误差估计&#xff1a; 代码解析&…...

【CCF-CSP】 202309-3 梯度求解

思路&#xff1a; 将表达式整理成只有目标求导变量的无括号加法表达式&#xff0c;其他变量均代入其值&#xff0c;然后利用最简单的求导公式&#xff0c;求出最终值。 样例1 x1 x1 x1 * x2 *转换成 x1*x1*x1x1*x2 若求导x1&#xff0c;则只留下x1&#xff0c;变为 x1*x1*x1…...

jvm的类加载

文章目录 概要加载类加载器分类双亲委派模型自定义加载器 验证准备解析初始化<cinit>与<init> 概要 jvm运行时的整体结构如下 一个Car类&#xff0c;类跟Car对象的转换过程如下&#xff1a; 加载后的class类信息存放于方法区&#xff1b;ClassLoader只负责clas…...

2024年汉字小达人活动4个多月开赛:18道历年选择题和答案、解析

根据近年的安排&#xff0c;2024年第11届汉字小达人比赛还有4个多月就启动&#xff0c;那么孩子们如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。②把历年真题刷…...

群晖安装青龙脚本

青龙定时任务管理面板&#xff0c;支持 Python3、JavaScript、Shell、Typescript 这几种环境&#xff0c;通过它可以方便的管理和运行定时任务&#xff08;在某个时间执行一段代码&#xff09;&#xff0c;并且只需简单的配置&#xff0c;就可以在各个平台收到任务执行的结果通…...

【机器学习系列】使用高斯贝叶斯模型进行数据分类的完整流程

目录 一、导入数据 二、选择特征 三、十折交叉验证 四、划分训练集和测试集 五、训练高斯贝叶斯模型 六、预测测试集 七、查看训练集和测试集上的分数 八、查看混合矩阵 九、输出评估指标 一、导入数据 # 根据商户数据预测其是否续约案例 import pandas #读取数据到 da…...

Python中的单例模式:原理、实现与应用

Python中的单例模式&#xff1a;原理、实现与应用 一、引言 在软件开发中&#xff0c;设计模式是一种用于解决常见问题的最佳实践。单例模式&#xff08;Singleton Pattern&#xff09;是这些设计模式中的一种&#xff0c;它确保一个类仅有一个实例&#xff0c;并提供一个全局…...

Linux基础(六):Linux 系统上 C 程序的编译与调试

本篇博客详细分析&#xff0c;Linux平台上C程序的编译过程与调试方法&#xff0c;这也是我们后续程序开发的基础。 目录 一、第一个hello world程序 1.1 创建.c文件 1.2 编译链接 运行可执行程序 二、编译链接过程 2.1 预编译阶段 2.2 编译阶段 2.3 汇编阶段 2.4 链…...

移动硬盘难题:不显示容量与无法访问的解决策略

在使用移动硬盘的过程中&#xff0c;有时会遇到一些棘手的问题&#xff0c;比如移动硬盘不显示容量且无法访问。这种情况让人十分头疼&#xff0c;因为它不仅影响了数据的正常使用&#xff0c;还可能导致重要数据的丢失。接下来&#xff0c;我们就来详细探讨一下这个问题及其解…...

基于springboot+vue的智慧外贸平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

@Async详解,为什么生产环境不推荐直接使用@Async?

一、Async 注解介绍&#xff1a; Async 注解用于声明一个方法是异步的。当在方法上加上这个注解时&#xff0c;Spring 将会在一个新的线程中执行该方法&#xff0c;而不会阻塞原始线程。这对于需要进行一些异步操作的场景非常有用&#xff0c;比如在后台执行一些耗时的任务而不…...

LaTeX 2022软件安装教程(附软件下载地址)

软件简介&#xff1a; 软件【下载地址】获取方式见文末。注&#xff1a;推荐使用&#xff0c;更贴合此安装方法&#xff01; LaTeX 2022是基于ΤΕΧ的一种排版系统&#xff0c;特别适用于生成科技和数学文档的高质量打印。它可用于各种文档类型&#xff0c;从简单信函到完整…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...