自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漫步者

漫步无境

  • 博客(199)
  • 收藏
  • 关注

原创 if/switch语句初始化功能

这个特性是在c++17版本引入的,在这之前是不允许在if语句或者switch语句中使用赋值语句,不仅仅是if语句和switch语句,包括lambda表达式在c++17版本也支持类在捕获表达式中支持赋值操作。通过上面的基本语法可以看到在c++17之前value的获取必须在if之前完成,如果将像c++17版本的写法,编译器会报错。

2025-04-18 17:35:26 179

原创 RAII资源管理理解

RAII (Resource Acquisition Is Initialization) 是一种 C++ 编程范式,这不是一个语法特性,而是一种处理方式。怎么理解RAII呢?前面说了这不是一种库特性,更像是一种约定,一种管理资源的方式,c++标准库某些库特性提供了RAII资源给管理的特性,用户自己设计的类型也可以按照RAII的思想进行设计。

2025-04-18 17:16:17 566

原创 图算法之Floyd算法详解

Floyd算法,中文名称弗洛伊德算法,这是一个图算法,用于求解图中每对顶点之间的最短路径问题。这是一个经典的动态规划算法,。

2025-04-16 16:56:43 1019

原创 非类型模板参数详解

非类型模板参数(Non-type template parameters),顾名思义在模板中这个参数不是表示一个类型,而是表示一个值,它必须是编译时常量。如上所示,T作为模板参数表示一个类型,而N作为一个模板参数,表示的并不是一个类型,而是一个数值。从上面的例子可以看到非类型模板参数N作为一个数值,供模板参数使用。非类型模板参数在c++98就已经引入了,只是我们平时的使用中可能对模板参数是一个类型这种形似见的比较多,所以对非类型模板参数有所忽略。

2025-04-14 17:28:35 355

原创 模板参数自动推导

c++17版本引入了模板参数类型自动推导功能,在此之前的c++版本使用模版必须显式的指定模板的参数,到了c++17版本可以根据输入的参数自动推导模板参数的类型。注意,模板参数自动推导功能不能自动推导默认构造函数,因为默认构造函数的定义不会显式的输入任何参数,编译器无法推导。

2025-04-14 09:56:38 199

原创 特征金字塔网络(FPN)详解

特征金字塔网络是是一种多尺度特征表示方法,用于解决目标检测、图像分割等任务中对不同尺寸的目标的检测问题。特征金字塔网络会有多个尺度的特征图输出,每个大尺度的特征图都包含小尺度特征图的信息,进而将小尺度特征图中的信息融合到大尺度的特征图中,这样在大尺度中也会包含只有小尺度特征图的语义信息。特征金字塔网络会有多个输出,每个输出的尺度各不相同,但是通道数相同自顶向下是只从小尺度特征图向大尺度特征图方向传递信息自底向上路径,它的意思是从大尺度特征图向小尺度方向的变化通过横向连接特征融合实现了细节和语义的融合。

2025-04-03 18:02:58 1294

原创 空间信息、通道数、大/小尺度、语义理解详解

空间信息指特征图中像素的位置关系和局部结构信息,包括物体的形状、纹理、边缘等空间特征。空间信息可以理解图像中物体的形状、纹理、边缘、相对位置等空间特征。- 尺寸↓ → 通道数↑- 空间精确度↓ → 语义信息↑尺度越小,一般情况下通道数会越多,尤其是在计算机视觉处理中空间信息细节越少,则会换来语义信息的不断增加如果需要对物体进行精确的定位?保留更多的空间信息如果需要语义理解?增加通道数和深度如果需要多尺度检测?使用特征金字塔。

2025-04-03 11:10:03 700

原创 std::transform详解

std::transform是c++98引入的特性,这一个转换操作,它将输入范围内的每个元素通过指定的操作转换为新的值。在c++17版本对该特性引入了新的变化,即支持指定执行策略(并行执行、串行执行等),但是总体功能为发生变化。

2025-03-26 15:52:34 448

原创 std::reduce详解

reuduce的含义是规约,即将一系列元素通过某种操作组合成单个结果的过程。c++17引入了std::reduce函数。std::reduce与std::accumulate类似,不同的是std::reduce采用的并行方式进行运算,所谓并行就是在多个线程同时进行运算得到的结果的过程;std::accumulate是串行方式进行得到一个累积和。所以从这个角度来看,当数据量比较小时优先采用std::accumulate完成求和运算。当数据量比较大时,推荐采用std::reduce来完成计算。

2025-03-26 15:18:46 979

原创 std::clamp详解

/ 使用大于比较器(降序)std::cout << "使用greater比较器: " << value << std::endl;//输出为5// 自定义比较函数std::cout << "使用自定义比较器: " << abs_value << std::endl;//输出为10那如果使用了自定义比较器,就像上面的例子,那么clamp的比较逻辑是什么呢?请看下面的介绍。return v;结合上面的介绍,可以得到上面的例子输出分别为5和10.

2025-03-25 16:00:40 440

原创 std::sample详解

从一个大的数据集中采样部分数据集作为训练数据集,这一般用于神经网络训练的场景随机测试用例,即从一个测试用例集中随机的抽取一个或者多个测试用例。

2025-03-25 14:52:33 440

原创 节点拼接特性详解

避免了元素的复制/移动操作避免了内存的重新分配保持了容器的内部结构提供了更灵活的容器操作方式。

2025-03-19 13:59:22 404

原创 std:byte详解

从上面可以看出std::byte本质上是强枚举类型。。

2025-03-17 16:09:24 395

原创 std::filesystem详解

c++17引入了std::filesystem库,这是一个强大的文件系统操作工具,可以获取文件和目录的各种信息(文件名称、后缀、类型、大小,遍历目录等)。

2025-03-17 15:08:35 586

原创 std::invoke详解

std::invoke表示函数调用:只要调用std::invoke,且执行了这个语句,那么就相当于调用了传入的函数对象std::invoke的含义传入一个函数对象及这个函数对象的参数,然后通过std::invoke完成这个函数的调用std::invoke可以实现对函数对象的调用,达到与直接调用函数相同的效果如果要实现类似回调系统、事件系统类似的功能,需要集合模板来实现。

2025-03-14 15:32:10 683

原创 std::string_view详解

c++17版本引入了std::string_view特性,这是一个轻量级的字符串视图,提供了一个字符窜的只读视图,而不需要进行内存和复制。

2025-03-13 18:19:59 495 2

原创 std::any详解

【代码】std::any详解。

2025-03-11 22:20:19 337

原创 numpy常用函数详解

在深度神经网络代码中经常用到numpy库的一些函数,很多看过之后很容易忘记,本文对经常使用的函数进行归纳总结。

2025-03-09 22:38:21 942

原创 std::optional详解

c++17版本引入了std::optional特性,这一个类模板,基本的使用方法如下:这个新特性的含义是利用std::optional<T>创建的某个类型的对象,这个对象存储某个类型的值,这个值可能存在,也可能不存在。

2025-03-09 20:39:05 238

原创 快速生成viso流程图图片形式

我们要善于利用大模型提高我们的效率这个方案的缺点是生成的是图片,应该还有其他可以直接导入PlantUml语言的软件,我这里没有寻找,如果大家找到了,请放到我的留言区,不胜感激。

2025-03-05 16:59:41 3091

原创 std::variant特性详解

在编译阶段会进行类型检查data=1;//正确//正确//编译不通过。

2025-03-04 17:36:22 586

原创 智能指针之std::shared_ptr<T>详解

std::shared_ptr对象是需要额外占用内存空间的,对象大小一般为2个指针变量的长度shared_ptr对象包含的是两个指针变量当shard_ptr对象数据库块指针的引用变量变为0时,自动触发ptr指向的数据块的内存释放。

2025-03-04 15:24:37 1206

原创 左值引用与指针的区别

很多朋友遇到过这个问题:左值引用与指针有哪些区别?脑子里闪过很多答案,但大部分都是各自的定义,真要说他们两个有什么区别,有的时候还这是说不上来。本文针对这个问题进行归纳总结,希望对大家有所帮助。

2025-03-03 16:11:39 373

原创 c++之移动构造函数或者移动赋值运算符的作用

前面的文章中有的涉及到了移动构造函数或者移动赋值运算符,对于它们的形式有了一定的了解,但是对他们的核心作用以及为什么要引入这两个东东,很多朋友还是一知半解。本文就是来解决这个问题的。要理解这个问题绕不开右值引用,c++11之前的 版本中只有拷贝构造函数,而拷贝构造函数是一般会,即会创建两个完全一样的对象,包括指针指向的区域都会进行重新申请内存和拷贝。这种情况下如果对象是一个大数组或占用资源多的对象,就会产生很大的内存拷贝开销。那么如何解决这个问题呢?c+11版本引入了右值引用、移动语义来解决这个问题。

2025-03-03 15:52:40 535

原创 c++自增/自减操作详解

看到的上面的代码,func内部会输出什么?整个的执行顺序是什么?

2025-03-02 20:41:15 389

原创 快速排序算法详解

快速排序是一种分治的策略的排序算法。它的核心排序思想是将问题不断的分解为子问题。

2025-03-02 18:37:56 1221

原创 python容器之常用操作

以列表list为例,这个list相当于c++中的数组或vector容器。那列表有哪些常用的操作呢?

2025-03-01 18:23:28 412

原创 c++之仿函数详解

有一些场景使用内置的仿函数无法满足要求,因为内置的仿函数一般只支持基本的数据类型,如int double等,对于一些用户自定义的类型,内置的仿函数无法实现需求。又或者用户对仿函数有更复杂的逻辑需求,内置的仿函数同样无法满足需求,所以需要用户自定义仿函数。// 使用greater仿函数进行降序排序// 使用自定义仿函数// 按奇偶性排序//自定义类型class Aprivate:int value1;int value2;

2025-03-01 12:13:32 415

原创 c++字符编码/乱码问题

之前我存在错误的认知:认为Unicode=UTF-16,实际上这是错误的理解,Unicode是一种字符集,它并不是编码方式,Unicode可以以不同的方式编码,还有一些错误的理解,比如我经常用使用qt框架进行开发,qt框架中的QString采用的就是UTF-16编码,在有些文章中没有描述清楚,仅仅是说QString采用的是Unicode字符串进行编码的,造成了我认为Unicode=UTF-16的印象。肯定是按照UTF-8格式进行存储,所有的字符都进行存储,包括双引号、分号、等号,换行符等。

2025-02-27 17:43:57 1078

原创 理解CPU与GPU频繁数据传输

在学习深度学习神经网络过程中,有时候会遇到一些描述“尽量避免CPU与GPU频繁数据传输”。那这句话应该如何理解呢?我们知道CPU可以访问内存,而GPU也有自己的显存。要完成功能一般都是CPU从硬盘或者其他数据源读取数据到内存中,然后将内存中的传输到GPU的显存中,GPU从显存中获取数据并进行计算,并最终将计算的结果返回给CPU的内存中。

2025-02-26 17:40:33 730

原创 c++之原始字符串字面量(raw string-literals)

在c++11版本引入了一个特性(raw string literals)字符串字面量,这个特性的引入解决了在c++字符串中如果包含类似换行符、指标、单个反斜杠、转义字符等可以以人们更能理解的方式去使用,而传统的携带这些字符串的字符串需要将这些字符显式的写到字符串中。官方的解释可能更清楚:来自转义序列的字符(制表符、换行符、单个反斜杠等)可以以原始形式输入,同时保持格式化。这在编写包含大量引号或特殊格式的文本时特别有用。这可以使你的字符串字面量更容易阅读和维护。

2025-02-26 17:19:07 471

原创 深度学习批次数据处理的理解

GPU非常适合于矩阵运算、卷积运算、元素级操作(比如每个元素乘2)。现在的GPU有的显存能够达到80GB甚至更高。

2025-02-26 16:45:43 1409

原创 选择排序算法

选择排序算法的核心思想:选择排序的重点是从剩余部分进行遍历查找。时间复杂度分析采用大O表示法,通过上面的例子来分析这个算法的时间复杂度,假设有n个数据:

2025-02-25 17:15:07 569

原创 命名空间namespace用法详解

该怎么理解上面的内容呢?

2025-02-25 16:25:09 435

原创 c++重载函数调用与重载转换运算符

首先应该理解什么叫重载转换运算符,前面的是将一个对象转换成函数调用的形式,这里是将一个对象直接转换成一个类型,这个类型可以是一个基本数据类型,也可以是复杂数据类型。更简单的理解是将一个类对象转换为一个类型。进入到c++11版本后,重载类型转换引入了新的语法特性“explicit convertion function”。这个特性通过关键字explicit来体现。在这个特性之前可以进行隐式转换,但是通过explicit关键字修饰后,则不能进行隐式转换。从上面的例子看到,函数调用重载的形式;

2025-02-24 15:45:52 535

原创 c++之类的初始化

本文对类的初始化方法进行梳理总结,类的初始化方法有多种形式,针对不同的变量也不一样。下面进入正题。注意上面的例子,(1)。(2)。(3)这种初始化方法仅在未定义构造函数的情况才会生效,如果存在构造函数,则会优先调用对应的构造函数,请看下一小节。。

2025-02-24 14:12:30 302

原创 c++之enum class详解

enum Color1 {BULE,RED} //编译错误,与Color 的定义重复这里的Color1中的RED与Color名称相同,会编译报错,产生如下错误:传统枚举可以隐式转换为整型传统枚举类型的数据可以与整型直接进行比较int n = c;//可以隐式转换,枚举可以转换为整型if(c == 0) {....} //可以直接与整数比较。

2025-02-21 14:57:58 446

原创 c++之nullptr与NULL

说白了就是,如果使用NULL,那么在某些情况下可能会编译报错,因为编译器编译时遇到了歧义,不知道使用哪个匹配的函数。nullptr是c++11Y引入的关键字,它是std::nullptr_t类型的右值常量。为什么这个不会报错呢?上面的调用会发生什么呢?

2025-02-18 19:35:55 425

原创 c++之类型别名详解

类型别名,顾名思义就是为一个类型创建一个新的名称,使用这个新的名称与使用之前的名称一模一样。

2025-02-18 18:08:42 211

原创 decltype详解

如果输入是变量,则返回比变量的类型如果输入是函数调用,则返回函数的返回值类型如果输入是一个赋值表达式,则返回的是左值引用类型。

2025-02-17 16:02:32 423

SSymlinkerbash脚本和sysroot-relativelinks.py脚本下载

SSymlinkerbash脚本和sysroot-relativelinks.py脚本下载

2023-07-27

Qt布局管理器一些会迷惑的点(1)

对布局管理器一些常见的迷惑的点进行总结,更好的指导大家进行开发

2023-05-22

Qt 控件透明度设置方法总结

对Qt下控件的透明度设置进行了总结,并一一进行了验证。

2023-04-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除