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

目录
模板参数与非类型模板参数
模板参数
类型模板参数——传递类型
非类型模板参数——传递数量
C++11希望array替代静态数组,但实际上vector包揽了一切
模板总结
优点:
缺点:
模板特化:针对某些类型进行特殊化处理
特化
-
模板参数与非类型模板参数
-
模板参数
-
类型模板参数——传递类型
- 传递一些参数(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替代静态数组,但实际上vector包揽了一切 模板总结 优点: 缺点: 模板特化:针对某些类型进行特殊化处理 特化…...
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.概述 线性回归是一种广泛应用于统计学和机器学习的技术,用于研究两个或多个变量之间的线性关系。在本文中,我们将深入探讨…...
西门子全球业务调整:数十亿欧元交易额,开启新篇章
导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 在风起云涌的全球经济舞台上,西门子&am…...
AI遇上遥感,未来会怎样?
随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…...
认知架构 cognitive architecture
Assistants API:以开发人员为中心。 有状态的API:允许存储以前的消息、上传文件、访问内置工具(代码解释器)、通过函数调用控制其他工具。 认知架构应用的两个组件:(1)如何提供上下文给应用 &…...
数据插值之朗格朗日插值(一)
目录 一、引言 二、代码实现 2.1 Lagrange插值求插值多项式: 代码解析: 1.vpa解释 2.ploy(x)解释: 3.conv()解释 4.poly2sym()解释 2.2 Lagrange插值求新样本值和误差估计: 代码解析&…...
【CCF-CSP】 202309-3 梯度求解
思路: 将表达式整理成只有目标求导变量的无括号加法表达式,其他变量均代入其值,然后利用最简单的求导公式,求出最终值。 样例1 x1 x1 x1 * x2 *转换成 x1*x1*x1x1*x2 若求导x1,则只留下x1,变为 x1*x1*x1…...
jvm的类加载
文章目录 概要加载类加载器分类双亲委派模型自定义加载器 验证准备解析初始化<cinit>与<init> 概要 jvm运行时的整体结构如下 一个Car类,类跟Car对象的转换过程如下: 加载后的class类信息存放于方法区;ClassLoader只负责clas…...
2024年汉字小达人活动4个多月开赛:18道历年选择题和答案、解析
根据近年的安排,2024年第11届汉字小达人比赛还有4个多月就启动,那么孩子们如何利用这段时间有条不紊地备考呢?我的建议是两手准备:①把小学1-5年级的语文课本上的知识点熟悉,重点是字、词、成语、古诗。②把历年真题刷…...
群晖安装青龙脚本
青龙定时任务管理面板,支持 Python3、JavaScript、Shell、Typescript 这几种环境,通过它可以方便的管理和运行定时任务(在某个时间执行一段代码),并且只需简单的配置,就可以在各个平台收到任务执行的结果通…...
【机器学习系列】使用高斯贝叶斯模型进行数据分类的完整流程
目录 一、导入数据 二、选择特征 三、十折交叉验证 四、划分训练集和测试集 五、训练高斯贝叶斯模型 六、预测测试集 七、查看训练集和测试集上的分数 八、查看混合矩阵 九、输出评估指标 一、导入数据 # 根据商户数据预测其是否续约案例 import pandas #读取数据到 da…...
Python中的单例模式:原理、实现与应用
Python中的单例模式:原理、实现与应用 一、引言 在软件开发中,设计模式是一种用于解决常见问题的最佳实践。单例模式(Singleton Pattern)是这些设计模式中的一种,它确保一个类仅有一个实例,并提供一个全局…...
Linux基础(六):Linux 系统上 C 程序的编译与调试
本篇博客详细分析,Linux平台上C程序的编译过程与调试方法,这也是我们后续程序开发的基础。 目录 一、第一个hello world程序 1.1 创建.c文件 1.2 编译链接 运行可执行程序 二、编译链接过程 2.1 预编译阶段 2.2 编译阶段 2.3 汇编阶段 2.4 链…...
移动硬盘难题:不显示容量与无法访问的解决策略
在使用移动硬盘的过程中,有时会遇到一些棘手的问题,比如移动硬盘不显示容量且无法访问。这种情况让人十分头疼,因为它不仅影响了数据的正常使用,还可能导致重要数据的丢失。接下来,我们就来详细探讨一下这个问题及其解…...
基于springboot+vue的智慧外贸平台
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
@Async详解,为什么生产环境不推荐直接使用@Async?
一、Async 注解介绍: Async 注解用于声明一个方法是异步的。当在方法上加上这个注解时,Spring 将会在一个新的线程中执行该方法,而不会阻塞原始线程。这对于需要进行一些异步操作的场景非常有用,比如在后台执行一些耗时的任务而不…...
LaTeX 2022软件安装教程(附软件下载地址)
软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! LaTeX 2022是基于ΤΕΧ的一种排版系统,特别适用于生成科技和数学文档的高质量打印。它可用于各种文档类型,从简单信函到完整…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
