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

template

模板

模板注意事项
  • 模板的函数体和声明一定要在一起,即放在同一个.h文件中,而不能将其分开到cpp和h文件中
  • 模板的编译技巧就是尽量多编译,模板很难查找错误
  • 模板的报错一般只有第一行有作用
  • 模板指定类型从左到右依次指定
模板推导

#pragma
#include <iostream>
template <typename V, typename T, typename U> V add1(T data1, U data2) { return data1 + data2; }template <typename T, typename U> auto add2(T data1, U data2) { return data1 + data2; }//使用后置返回值,decltype+auto关键字
template <typename T, typename U> auto add3(T data1, U data2) -> decltype(data1 + data2) {std::cout << "Template Method!\n";return data1 + data2;
}//当存在模板和实例函数的时候,模板推导使用模板而不是实例函数
auto add3(int data1, double data2) -> decltype(data1 + data2) {std::cout << "Instance Method!\n";return data1 + data2;
}void testTemplateDeduce() {add1<double>(12, 12.7); //必须指定返回值类型才能进行推断,从中可以观察到的是模板参数可以只传递部分add2(12, 12.7);   //使用auto关键字代替模板参数的返回值add3<>(12, 12.7); //使用尖括号显示指定推导的类型为模板函数
}
模板的特化

注意:函数的全特化必须位于泛化版本之前进行声明·

//普通函数->特化->泛化//全特化,即显示指定模板的样子,但是实际上全部指定参数,模板自动推导
template <> void showLove(const char *str1, const char *str2) {std::cout << "Full specialization \n";std::cout << str1 << "  and " << str2 << " be there!";
}
//模板的特化与偏特化
template <typename T, typename U> void showLove(const T *str1, const U str2) {std::cout << "Generalization\n";std::cout << str1 << "  and " << str2 << " be there!"
}//函数模板是不能进行偏特化的,比如下面的做法就会报错
// template <> void showLove<double, U>(const char *str1, const U str2) {}
template <typename U> void showLove(const char *str1, const U str2) {std::cout << "模板函数的重载实现模拟偏特化" << std::endl;
}//测试特化
void testSpecializition() { showLove<>("lin", "cong"); }
非模板参数
//模板类型的默认值指定
int sub(int a, int b) { return a + b; }//指定函数指针的类型
typedef int (*FuncType)(int, int); //定义函数指针FuncType//函数模板上还可以指定非模板参数,非模板参数只需要指明类型即可
template <typename _Tp, typename _Up, typename _func = FuncType>
auto addProxy(_Tp data1, _Up data2, FuncType func = add) {std::cout << "template parameter\n";return func(data1, data2);
}//非模板参数可以位于任何地方,但是目前非类型模板参数支持度有限
//整型或者枚举型
//指针类型
//左值引用类型
// auto或者decltype(auto)
template <typename T, int a = 100> void nonTemplateParam() {T b = "str";std::cout << b << a << "\n";
}void testFunc() {std::cout << addProxy(2, 3, &sub) << "\n";nonTemplateParam<char *, 110>();
}

网络编程[TODO]

取值只有两种,0、1

函数
pthread_mutex_init
pthread_mutex_destroy

9 摧毁一个互斥锁

pthread_mutex_lock

加锁操对互斥量进行减一,即mutex–(或-1)

phread_mutex_unlock

解锁对互斥量进行加一,即mutex++(或+1),同时将阻塞在该锁上的所有线程全部唤醒

phread_mutex_trylock

非阻塞式加锁,正常情况下对一个信号量进行加锁,如果该信号量已经被加锁,pthread_mutex_lock会导致阻塞,而try_lock并不会导致阻塞。EBUSY作为返回值

相关文章:

template

模板 模板注意事项 模板的函数体和声明一定要在一起&#xff0c;即放在同一个.h文件中&#xff0c;而不能将其分开到cpp和h文件中模板的编译技巧就是尽量多编译&#xff0c;模板很难查找错误模板的报错一般只有第一行有作用模板指定类型从左到右依次指定 模板推导 #pragma #…...

innovus中时序路径debug及命令使用详解?

写在前面&#xff1a;发现place结果所有与outport相关的timing check都找不到&#xff1f; 刚开始怀疑是sdc约束问题&#xff0c;check了input sdc文件及enc.dat/mmmc/mode/func.sdc 看一下是否设置了set_false_path.当然也可以用命令报出来: report_timing -unconstrained …...

C语言爱心代码大全集—会Ctrl+C就可以表白了

一、C语言爱心代码大全&#xff0c;会CtrlC就可以表白了&#xff01; 博主整理了一个C语言爱心代码大全&#xff0c;里面有C语言爱心代码会动的动态效果和C语言爱心代码大全静态效果&#xff0c;只需复制粘贴就可以用啦&#xff01; 1、动态C语言爱心代码效果图如下&#xff…...

python+vue+django耕地信息管理系统的设计与实现

基普通用户模块含有个人中心、耕地信息管理、转让许可申请管理、租赁许可申请管理等功能&#xff1b;普通管理员模块含有个人中心、用户管理、公示公告管理、耕地信息管理、耕地信息统计、转让许可申请管理、租赁许可申请管理、转让协议管理、租赁协议管理等功能&#xff1b;管…...

【云原生】Dockerfile制作WordPress镜像,实现compose编排部署

文章目录&#x1f479; 关于作者前言环境准备目录结构dockerfile制作镜像yum 脚本Dockerfile-mariadb 镜像Dockerfile-service 镜像docker compose 编排提升✊ 最后&#x1f479; 关于作者 大家好&#xff0c;我是秋意临。 &#x1f608; CSDN作者主页 &#x1f60e; 博客主页…...

五款好用又有趣的WIN10软件推荐

如果你想让你的电脑使用更方便、更有趣、更专业&#xff0c;那么你一定要看看这篇文章&#xff0c;因为我要给你推荐五款好用又有趣的WIN10软件 1.全局搜索——火柴 火柴是一款全局搜索软件&#xff0c;可以让你快速找到你想要的文件、程序、网页等&#xff0c;只需按下AltSp…...

朴素贝叶斯算法

# -*-coding:utf-8-*- """ Author: sunchang Desc: 代码4-7 朴素贝叶斯实现对异常账户检测 """ import numpy as np class NaiveBayesian: def __init__(self, alpha): self.classP dict() self.classP_f…...

【常见CSS扫盲雪碧图】从源码细看CSS雪碧图原理及实现,千字详解【附源码demo下载】

【写在前面】其实估计很多人都听过雪碧图&#xff0c;或者是CSS-Sprite&#xff0c;在很多门户网站就会经常有用到的&#xff0c;之所有引出雪碧图这个概念还得从前端加载多个图片时候页面闪了一下说起&#xff0c;这样给人的视觉效果体验很差&#xff0c;也就借此机会和大家说…...

Java多线程:ThreadLocal源码剖析

ThreadLocal源码剖析 ThreadLocal其实比较简单&#xff0c;因为类里就三个public方法&#xff1a;set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结&#xff0c;讲解ThreadLocal采取这样的思路。 三个理论基础 在剖析ThreadLo…...

96、数据的存储

运行实例&#xff1a; 在debug和release两种模式下&#xff0c;进行代码运行&#xff0c;debug下 i 的地址是大于arr[9] 的地址的&#xff0c;release 下i 的地址是小于arr[9] 的地址。原因是:release状态进行了优化处理。 C语言中基本的内置类型 整形数据类型 char …...

@EventListener注解详细使用(IT枫斗者)

EventListener注解详细使用 简介 EventListener是一种事件驱动编程在spring4.2的时候开始有的&#xff0c;早期可以实现ApplicationListener接口, 为我们提供的一个事件监听、订阅的实现&#xff0c;内部实现原理是观察者设计模式&#xff1b;为的就是业务系统逻辑的解耦,提高…...

[c++17新增语言特性] --- [[nodiscard]]和[[maybe_unused]]

1 [[nodiscard]] 介绍和应用示例 [[nodiscard]] 是C++17引入的一个属性(Attribute),它用于向编译器提示一个函数的返回值应该被检查,避免其被忽略或误用。它可以被用于函数、结构体、类、枚举和 typedef 等声明上,表示如果函数返回值未被使用,或者结构体、类、枚举和 type…...

Centos7安装和使用docker的笔记

最近项目要求用容器部署&#xff0c;所以需要将docker的用法搞清楚&#xff0c;在操作过程中&#xff0c;积累了一些操作方法和技巧&#xff0c;作为笔记&#xff0c;为后面使用做个参考。 首先安装docker需要给centos增加源&#xff08;参考https://www.runoob.com/docker/cen…...

结构像与功能像

导读现代神经成像技术使我们能够研究活体大脑的结构和功能。活体神经成像的益处是显而易见的&#xff0c;而且在基础和临床神经科学中&#xff0c;神经成像已经取得了巨大进展。本文概述了利用活体神经成像研究大脑结构和功能的工作和成就。介绍了几种不同类型的结构MRI成像方法…...

【IAR工程】STM8S基于ST标准库读取DS1302数据

【IAR工程】STM8S基于ST标准库读取DS1302数据✨申明&#xff1a;本文章仅发表在CSDN网站&#xff0c;任何其他网站&#xff0c;未注明来源&#xff0c;见此内容均为盗链和爬取&#xff0c;请多多尊重和支持原创!&#x1f341;对于文中所提供的相关资源链接将作不定期更换。&…...

【SpringBoot】实现后端服务器发送QQ邮件验证码的功能

步骤一、添加邮件相关依赖二、配置邮件服务器三、发送邮件PS&#xff1a;SMTP 发送失败的解决方案一、添加邮件相关依赖 在 pom.xml 文件中添加 JavaMail 和 Spring Mail 相关的依赖。示例代码如下&#xff1a; <dependency><groupId>com.sun.mail</groupId&g…...

vue在input中输入后,按回车,提交数据

vue在input中输入后&#xff0c;按回车&#xff0c;提交数据 1.展示效果如下&#xff1a; 2.代码展示&#xff1a; <div><el-input v-model"toAddNameText" keyup.enter.native"toAddName()" placeholder"回车&#xff0c;即新增该竖杆名称…...

【YOLOX】用YOLOv5框架YOLOX

【YOLOX】用YOLOv5框架YOLOX一、新建common_x.py二、修改yolo.py三、新建yolox.yaml四、训练最近在跑YOLO主流框架的对比实验&#xff0c;发现了一个很奇怪的问题&#xff0c;就是同一个数据集&#xff0c;在不同YOLO框架下训练出的结果差距竟然大的离谱。我使用ultralytics公司…...

【python机器学习实验】——逻辑回归与感知机进行线性分类,附可视化结果!

【python机器学习实验】——逻辑回归与感知机进行线性分类&#xff0c;附可视化结果&#xff01; 下载链接 下载链接 下载链接 可视化效果图&#xff1a; 感知机模型结果为例&#xff1a; 首先&#xff0c;我们有训练数据和测试数据&#xff0c;其每一行为(x,y,label)的形式…...

wps删除的文件怎么恢复

在办公中&#xff0c;几乎每个人都会用到WPS办公软件。它可以帮助我们快速有效地处理各种Word文档、ppt幻灯片、excel表格等。但有文件就会有清理&#xff0c;如果我们不小心删除了wps文件呢?那些wps删除的文件怎么恢复?针对这种情况&#xff0c;小编为大家带来一些恢复WPS文…...

植物树枝叶片果实检测数据集7220张VOC+YOLO格式

植物树枝叶片果实检测数据集7220张VOCYOLO格式数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7220 标注数量(xml文件个数)&#xff1a;7220…...

告别硬编码延时!用Vector CAPL定时器实现汽车总线报文精准周期发送

告别硬编码延时&#xff01;用Vector CAPL定时器实现汽车总线报文精准周期发送 在汽车电子测试领域&#xff0c;CAN、LIN等总线报文的周期发送是验证ECU功能的基础需求。传统脚本常依赖delay()或硬编码等待&#xff0c;不仅难以维护&#xff0c;更会因系统调度导致时序漂移。本…...

为什么顶尖纳米实验室已停用传统文献管理工具?NotebookLM私有知识中枢部署避坑清单(限内部研究员参考)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM纳米技术研究 NotebookLM 是 Google 推出的基于 AI 的研究协作者工具&#xff0c;其核心能力在于对用户上传的私有文档进行深度语义理解与上下文推理。在纳米技术这一高度跨学科、文献密集的研究领…...

PySOT单目标跟踪实战:从零搭建环境到模型部署的避坑指南(手把手教学,附代码)

1. 环境准备&#xff1a;从零搭建PySOT开发环境 第一次接触PySOT时&#xff0c;我花了整整两天时间折腾环境配置&#xff0c;踩遍了所有能踩的坑。为了让你们少走弯路&#xff0c;我把这些经验整理成可复现的步骤。首先需要明确的是&#xff0c;PySOT对系统环境有特定要求&…...

【免费下载】 探索语音合成新境界:so-vits-svc-4.1-Stable 资源文件推荐

探索语音合成新境界&#xff1a;so-vits-svc-4.1-Stable 资源文件推荐 【下载地址】so-vits-svc-4.1-Stable资源文件下载 本仓库提供 so-vits-svc-4.1-Stable 资源文件的下载。该资源文件是一个稳定版本的 so-vits-svc 模型&#xff0c;适用于语音合成和相关应用 项目地址: h…...

FigmaCN:打破语言壁垒,让Figma设计更高效的中文界面解决方案

FigmaCN&#xff1a;打破语言壁垒&#xff0c;让Figma设计更高效的中文界面解决方案 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗&#xff1f;你是否曾…...

Tracy安全最佳实践:开发与生产环境的安全配置指南

Tracy安全最佳实践&#xff1a;开发与生产环境的安全配置指南 【免费下载链接】tracy &#x1f60e; Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI s…...

【NotebookLM戏剧研究辅助实战指南】:20年戏剧学者亲授AI赋能文本细读的5大黄金工作流

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM戏剧研究辅助的底层逻辑与学科适配性 NotebookLM 以“语义锚点驱动”为核心机制&#xff0c;将用户上传的原始文本&#xff08;如莎士比亚手稿影印本OCR结果、梅兰芳口述史转录稿、《奥尼尔书…...

【BUUCTF】【WEB】ReadlezPHP

考点&#xff1a;打开题目&#xff0c;发现页面有点阴森&#xff1a;右键没有任何反应&#xff0c;那就右上角三个点&#xff1a;更多工具->开发者工具OK没有任何线索&#xff0c;那就用bp看看。拉倒最下面&#xff0c;发现右下角一个文件./time.php?source这可能是一个线索…...

Ti AWR2243实测:毫米波雷达通道积累,选相干还是非相干?一个实验讲清楚

Ti AWR2243毫米波雷达通道积累策略&#xff1a;工程实践中的深度抉择 毫米波雷达在现代自动驾驶系统中扮演着关键角色&#xff0c;而通道积累策略的选择直接影响着目标检测的精度与系统实时性。面对192个虚拟通道的海量数据&#xff0c;工程师们常常陷入两难&#xff1a;是追求…...