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

模板Plus

文章目录

  • 1.非类型模板参数的引入
  • 2.标准库和普通数组
  • 3.模板的特化

1.非类型模板参数的引入

//非类型模板参数 -- 常量
template<class T, size_t N = 10>
class array
{
private:T _a[N];
};int main()
{array<int> a1;array<int, 100> a2;array<double, 1000> a3;return 0;
}

2.标准库和普通数组

int main()
{array<int, 10> a1;  int a2[10] = { 0 };//a1[10];      越界检查--operator()函数调用//a2[15] = 0;  写会检查(部分会检查)读不检查return 0;
}

3.模板的特化

#define _CRT_SECURE_NO_WARNINGS 
#include <iostream>
#include <list>
#include <vector>
#include <algorithm>
#include <array>
#include <time.h>
#include <queue>
#include <stdbool.h>
using namespace std;struct Date
{//构造函数Date(int year, int month, int day):_year(year), _month(month), _day(day){}//判断大于bool operator>(const Date& d) const{if ((_year > d._year)|| (_year == d._year && _month > d._month)|| (_year == d._year && _month == d._month && _day > d._day)){return true;}else{return false;}}//判断小于bool operator<(const Date& d) const{if ((_year < d._year)|| (_year == d._year && _month < d._month)|| (_year == d._year && _month == d._month && _day < d._day)){return true;}else{return false;}}//成员属性int _year;int _month;int _day;
};//函数模板及特殊化处理
template<class T>
bool Greater(T left, T right)
{return left > right;
}
template<>
bool Greater<Date*>(Date* left, Date* right)
{return *left > *right;
}//类模板及特殊化处理
namespace apex
{template<class T>struct less{bool operator()(const T& left, const T& right) const{return left < right;}};template<>struct less<Date*>{bool operator()(Date* d1, Date* d2) const{return *d1 < *d2;}};
}int main()
{//函数模板特殊化处理Date d1(2022, 7, 7);Date d2(2022, 7, 8);cout << Greater(d1, d2) << endl;  Date* p1 = &d1;Date* p2 = &d2;cout << Greater(p1, p2) << endl; //类模板特殊化处理apex::less<Date> ls1;cout << ls1(d1, d2) << endl;apex::less<Date*> ls2;cout << ls2(p1, p2) << endl;//适配器模板的特化std::priority_queue<Date, vector<Date>, apex::less<Date>> dq1;std::priority_queue<Date*, vector<Date*>, apex::less<Date*>> dq2;dq2.push(new Date(2023, 8, 9));dq2.push(new Date(2023, 8, 10));dq2.push(new Date(2023, 8, 12));dq2.push(new Date(2023, 8, 13));return 0;
}

相关文章:

模板Plus

文章目录 1.非类型模板参数的引入2.标准库和普通数组3.模板的特化 1.非类型模板参数的引入 //非类型模板参数 -- 常量 template<class T, size_t N 10> class array { private:T _a[N]; };int main() {array<int> a1;array<int, 100> a2;array<double, …...

spring事务和数据库事务是怎么实现

Spring事务的原理 Spring事务的本质其实就是数据库对事务的支持&#xff0c;没有数据库的事务支持&#xff0c;spring是无法提供事务功能的。对于纯JDBC操作数据库&#xff0c;想要用到事务&#xff0c;可以按照以下步骤进行&#xff1a; 获取连接 Connection con DriverManag…...

el-date-picker设置默认当前日期

HTMl部分&#xff1a; <el-form-item label"拍摄时间&#xff1a;"><el-date-pickerv-model"searchData.filmingTimeRange"type"daterange"align"right"unlink-panelsrange-separator"至"start-placeholder"…...

vue中使用this.$refs获取不到子组件的方法,属性方法都为undefined的解决方法

问题描述 vue2中refs获取不到子组件中的方法&#xff1f;&#xff0c;而获取到的是undefined 原因及解决方案&#xff1a; 第一种、在循环中注册了很多个ref 因为注册了多个ref&#xff0c;获取是不能单单知识refs.xxx&#xff0c;需要使用数组和索引来获取具体一个组件refs[…...

Linux命令200例:df用于显示文件系统的磁盘空间使用情况

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…...

Service not registered 异常导致手机重启分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、Service not registered 异常导致手机重启二、Service not registered 解决方案 一、Service not registered 异常导致手机重启 1.重启 的部分Log如…...

深度解读|一站式ABI平台 Smartbi Insight V11 能力再升级

纵观过去&#xff0c;我们发现汽车和BI的发展有异曲同工之妙。 100来年&#xff0c;汽车的动力从蒸汽到燃油再到新能源&#xff0c;汽车的操控方式从手动到自动再到智能无人驾驶。而在BI领域&#xff0c;自1958年BI的概念提出后&#xff0c;底层数据准备从报表开发、Cube多维模…...

vConsole手机调试模式uniapp和原生h5

手机打开调试模式的方法 尽量放在页面头部&#xff0c;底部有可能不行 原生 <script src"https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js"></script> <script>// init vConsolevar vConsole new VConsole();console.log(Hello world)…...

Flutter Dart语言(05)异步

0 说明 该系列教程主要是为有一定语言基础 C/C的程序员&#xff0c;快速学习一门新语言所采用的方法&#xff0c;属于在C/C基础上扩展新语言的模式。 1 async和await 在Dart语言中&#xff0c;虽然没有像其他语言&#xff08;如Java、C、Python&#xff09;中的传统多线程概…...

滇医通微信小程序分析笔记

注意 本文章仅供学习交流使用&#xff0c;如果你是铁粉你就会知道博主之前发布过一篇相关的文章&#xff0c;但是由于代码涉及到法律相关所以就隐藏了&#xff0c;两年的时间过去了&#xff0c;因为女朋友已经早早安排上了&#xff0c;所以就搁置了&#xff0c;本次不做代码分…...

IoTDB在springboot2中的(二) 查询

上一章我们处理的基本的构建接入&#xff0c;以及插入的处理&#xff0c;那么接下来我们进行查询的操作处理。 我们继续在IoTDBSessionConfig工具类中加入查询的方法处理 /*** description: 根据SQL查询最新一条数据* author:zgy* param sql sql查询语句&#xff0c;count查询…...

SpringBoot 底层机制分析【Tomcat 启动+Spring 容器初始化+Tomcat 如何关联Spring 容器】【下】

&#x1f600;前言 本篇博文是关于SpringBoot 底层机制分析实现&#xff0c;希望能够帮助你更好的了解SpringBoot &#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大…...

NLP(六十五)LangChain中的重连(retry)机制

关于LangChain入门&#xff0c;读者可参考文章NLP&#xff08;五十六&#xff09;LangChain入门 。   本文将会介绍LangChain中的重连机制&#xff0c;并尝试给出定制化重连方案。   本文以LangChain中的对话功能&#xff08;ChatOpenAI&#xff09;为例。 LangChain中的重…...

C字符串与C++ string 类:用法万字详解(上)

目录 引言 一、C语言字符串 1.1 创建 C 字符串 1.2 字符串长度 1.3 字符串拼接 1.4 比较字符串 1.5 复制字符串 二、C字符串string类 2.1 解释 2.2 string构造函数 2.2.1 string() 默认构造函数 2.2.2 string(const char* s) 从 C 风格字符串构造 2.2.3 string(co…...

async/await函数需要trycatch吗?

前言 写异步函数的时候&#xff0c;promise 和 async 两种方案都非常常见&#xff0c;甚至同一个项目里&#xff0c;不同的开发人员都使用不同的习惯, 不过关于两者的比较不是本文关注的重点&#xff0c;只总结为一句话&#xff1a;“async 是异步编程的终极解决方案”。 当使…...

Jenkins集成appium自动化测试(Windows篇)

一&#xff0c;引入问题 自动化测试脚本绝大部分用于回归测试&#xff0c;这就需要制定执行策略&#xff0c;如每天、代码更新后、项目上线前定时执行&#xff0c;才能达到最好的效果&#xff0c;这时就需要进行Jenkins集成。 不像web UI自动化测试可以使用无痕浏览器做到无界…...

MongoDB:切换log日志文件

可以不重启MongoDB&#xff0c;切换日志文件 use admin db.runCommand({logRotate:1})参考 MongoDB 日志切割三种方式...

代码随想录第三十五天

代码随想录第三十五天 Leetcode 860. 柠檬水找零Leetcode 406. 根据身高重建队列Leetcode 452. 用最少数量的箭引爆气球 Leetcode 860. 柠檬水找零 题目链接: 柠檬水找零 自己的思路:我的垃圾思路&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;复…...

块、行内块水平垂直居中

1.定位实现水平垂直居中 <div class"outer"><div class"test inner1">定位实现水平垂直居中</div></div><style>.outer {width: 300px;height: 300px;border: 1px solid gray;margin: 100px auto 0;position: relative;}.te…...

Mybatis引出的一系列问题-动态 SQL

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架&#xff0c;你应该能理解根据不同条件拼接 SQL 语句有多痛苦&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号。利用动态 SQL&#xff0c;可以彻底…...

Android Studio中文界面汉化教程:3步实现母语开发环境

Android Studio中文界面汉化教程&#xff1a;3步实现母语开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Android …...

终极CAD数据解放方案:深度解析LibreDWG开源DWG转换工具实战指南

终极CAD数据解放方案&#xff1a;深度解析LibreDWG开源DWG转换工具实战指南 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 在当今数字化设计时代&#xf…...

别再只会拖控件了!FastReport 实战:手把手教你用代码搞定复杂报表(含分组、过滤、合计)

代码驱动报表革命&#xff1a;FastReport高级开发实战指南 在电商后台系统中&#xff0c;销售报表往往需要处理动态分组、条件过滤和跨页合计等复杂需求。传统拖拽式设计工具虽然入门简单&#xff0c;但面对这类业务场景时常常捉襟见肘。本文将带你突破界面限制&#xff0c;通过…...

高数函数定义域避坑指南:从‘x不能为零’到抽象函数,手把手教你识别题目陷阱

高数函数定义域避坑指南&#xff1a;从‘x不能为零’到抽象函数&#xff0c;手把手教你识别题目陷阱 考前冲刺阶段&#xff0c;函数定义域问题往往是高数考试中的"隐形杀手"。许多学生明明掌握了复杂计算技巧&#xff0c;却在基础定义域判断上频频失分。本文将直击五…...

告别COM Server!用Python+UDP给CANoe CAPL脚本开个“外挂”

突破CAPL封闭性&#xff1a;Python与CANoe的轻量级UDP通信实战 在汽车电子测试领域&#xff0c;CANoe作为行业标准工具&#xff0c;其内置的CAPL脚本语言为测试工程师提供了强大的自动化能力。然而&#xff0c;当我们需要将外部复杂算法&#xff08;如机器学习模型&#xff09…...

RISC-V开发板测评实战:从申请到深度评测的完整指南

1. 项目概述&#xff1a;一次深度参与RISC-V生态的绝佳机会最近在电子发烧友论坛上看到了一个挺有意思的活动——“第二届RISC-V开发板测评大赛”&#xff0c;主办方是昊芯。对于咱们这些搞嵌入式、玩单片机、或者对开源硬件和RISC-V架构感兴趣的朋友来说&#xff0c;这绝对是一…...

从样本到序列:枸杞DNA条形码鉴定的关键步骤与陷阱规避

一、引言&#xff1a;为何需要PCR鉴定枸杞&#xff1f;枸杞&#xff08;Lyciumspp.&#xff09;作为药食同源的重要资源&#xff0c;市场长期存在以土库曼枸杞、白刺等近缘种或伪品冒充高价值宁夏枸杞&#xff08;L. barbarum&#xff09;的现象。传统鉴别依赖果实形态和显微特…...

AI英语智能体的开发

构建一个专门用于英语学习的AI智能体&#xff08;AI Agent&#xff09;&#xff0c;核心在于如何将大语言模型&#xff08;LLM&#xff09;的通用能力&#xff0c;转化为符合二语习得&#xff08;SLA&#xff09;理论的教学逻辑。这类智能体不仅需要“懂英语”&#xff0c;更需…...

XLink 和 XPointer 语法详解

XLink 和 XPointer 语法详解 概述 XLink(XML Linking Language)和 XPointer(XML Pointer Language)是XML文档中处理链接和定位信息的语言。本文将详细解释XLink和XPointer的语法及其应用。 XLink 语法 XLink定义了一种标准的方法,允许在XML文档内部和之间建立链接。以…...

微信协议逆向工程:从模拟操作到Hook技术的安全检测架构演进

微信协议逆向工程&#xff1a;从模拟操作到Hook技术的安全检测架构演进 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriend…...