Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 override

override用于确保虚函数的正确重写,避免签名不匹配问题。它能提高代码的可读性和可维护性,便于他人理解代码中的继承关系。下面通过一个具体的代码实例展示了override的使用,以及它在派生类中防止函数签名不匹配和提高代码可读性等方面的作用。

2024-09-30 09:53:07 431

原创 C++指针(超详解)

指针的定义使用符号,表示指针类型。你可以通过运算符获取变量的地址。int a = 10;//定义一个整型变量//定义一个整型指针,指向变量a的地址其中int*的作用是声明一个指向整型(int)的指针,p是指针变量,&是取地址符,所以,上述代码的意思是将整型变量a的地址用取出赋值给指针变量p。int a = 10;//打印p指向的地址空间return 0;指针数组:是一个数组,每个元素都是一个指针。示例中ptrArr是一个包含3个指针的数组。数组指针:是一个指针,它指向一个数组。示例中。

2024-09-26 17:20:11 753

原创 C++中const(最全详细说明和使用)

C++ 中的const提供了一种强有力的机制来提高代码的安全性和可读性。它能有效防止程序中的意外修改,确保某些数据的不可变性。通过在适当的地方使用const,可以使代码更加健壮并减少错误的发生。

2024-09-24 16:06:29 318

原创 伪终端(pseudo-terminal)是什么?

伪终端在Linux/Unix系统中提供了一种灵活的机制,用于模拟终端设备,使用户、程序或远程连接工具可以通过虚拟终端与系统交互,特别是在远程会话和终端模拟器中非常重要。

2024-09-23 10:29:55 505

原创 c++ static(详解)

在中,关键字用于定义具有的变量或方法。它在不同上下文中有不同的含义,通常与变量的存储方式和作用域相关。的主要作用是控制变量或函数的可见性和生命周期。可以通过一个生活中的场景来形象化。

2024-09-19 22:04:58 871

原创 STL基本容器

C++标准模板库(STL)提供了多种容器,用于管理和存储数据。STL的基本容器可以分为三大类:序列式容器、关联式容器和无序关联容器。

2024-09-18 16:40:56 319

原创 GDB调试

使用以下命令编译:注:当在 中直接使用时,会默认执行上一条命令下面是一个使用GDB进行调试的具体实例,包括代码编写、编译、启动GDB、设置断点、执行调试等。假设你有一个简单的C++程序 :1. 编译程序首先,使用 选项编译程序以包含调试信息:2. 启动GDB启动GDB并加载编译后的程序:3. 设置断点在 函数的入口处设置断点:在 函数的入口处设置断点:4. 运行程序运行程序并提供输入:程序会在 函数的入口处暂停。此时,GDB会显示程序的状态和当前

2024-09-16 13:54:18 401

原创 最小覆盖子串

给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。tts"BANC"最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。"a"整个字符串 s 是最小覆盖子串。""t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。

2024-09-16 11:05:05 854

原创 Makefile(超详细一文读懂)

make: 默认会编译源文件,生成可执行文件app。make clean: 清理编译生成的对象文件和可执行文件。以下是一个简单的Makefile示例,适用于一个包含多个源文件的 C++ 项目。project/Makefile# CompilerCXX = g++%.o: %.cppclean:CXX = g++CXX = g++: 定义了编译器使用g++。: 设置编译选项:-Wall: 启用所有常见的编译警告,有助于发现潜在的错误。-std=c++17: 指定使用 C++17 标准。

2024-09-14 20:49:34 1998

原创 (C/C++)静态库和动态库的制作

这意味着,静态库中的代码会被复制到每个使用它的程序中,因此静态库不需要在程序运行时被单独加载。制作静态库可以帮助你将常用的代码模块化、重用,简化开发过程。首先,创建几个C/C++源文件,它们将组成静态库。例如,创建两个c文件math_functions.c和string_functions.c,并为其编写相应的功能。接下来,使用ar(archive utility)工具将这些.o文件打包成一个静态库。静态库的扩展名通常是.a。要使用你创建的静态库,编译和链接你的测试程序时,必须指定库的路径和名称。

2024-09-13 22:11:53 560

原创 gcc 与 g++ 区别

gcc:C语言编译器,默认编译C代码,编译C++时需要手动链接C++库。g++:C++语言编译器,默认编译C++代码,自动链接C++标准库。如果你的项目主要是C++代码,通常使用g++更方便,而对于C语言代码,使用gcc是更合适的选择。

2024-09-13 20:31:41 453

原创 C++ override 关键字用法

public:2. 派生类重写虚函数,并使用overridepublic:void display() const override { // 使用 override在这个例子中,Derived类中的display函数重写了Base类中的display函数,并且使用了override关键字。这向编译器明确表明,display是对基类虚函数的重写。overrideoverride明确表示派生类中的函数是重写基类中的虚函数。通过使用override。

2024-09-12 20:42:04 324

原创 socket通讯原理及例程(详解)

accept()用于从连接队列中取出客户端的连接请求,建立连接。返回一个新的套接字,用于服务器与客户端的通信。原监听套接字继续等待其他连接请求。通过accept(),服务器能够与多个客户端进行通信,每个客户端都有自己独立的套接字,而服务器的监听套接字则持续接收新的连接请求。在网络编程中,服务器和客户端建立连接后,可以通过send()和recv()函数来发送和接收数据。这两个函数分别用于通过套接字向远程端发送数据和从远程端接收数据。send()send()用于通过套接字发送数据。recv()

2024-09-11 22:16:19 1143

原创 #include <netinet/in.h>

这是一个标准的网络编程头文件,用于定义 IP 地址、协议以及与网络接口相关的数据结构和常量。它主要用于在基于 IPv4 和 IPv6 的网络编程中。

2024-09-11 21:14:12 396

原创 ping操作

Ping(发音为“拼”)是一种广泛使用的网络诊断工具,用于测试计算机或设备在IP网络上的可达性以及测量数据包往返所需的时间。:这是往返时间(Round-Trip Time,RTT),表示从发送请求到收到回复所需的时间,以毫秒(ms)为单位。:这是生存时间(Time to Live)的值,表示数据包在网络中可以经过的最大路由节点数。:每个ICMP请求数据包的有效负载大小为56字节,加上ICMP头部的28字节,总共发送的数据包大小为84字节。:这是ICMP请求的序列号,表示这是第一个发送的请求。

2024-09-11 10:39:34 670

原创 C++ #include <cstring>(详解)

是在 C++ 程序中引入头文件<cstring>的语句。这个头文件提供了用于处理 C 风格字符串(即以空字符'\0'结尾的字符数组)的函数。具体来说,<cstring>(1)strcpystrcpy是cstring中用于复制 C 风格字符串的函数,它将源字符串的内容复制到目标字符串中,包括末尾的空字符 ('\0'使用strcpy时需要确保目标数组有足够的空间来存放源字符串。source。

2024-09-08 21:26:22 1234

原创 无重复字符的最长子串

给定一个字符串 s,请你找出其中不含有重复字符的的长度。= "因为无重复字符的最长子串是 ",所以其长度为。= "因为无重复字符的最长子串是 "",所以其长度为。= "因为无重复字符的最长子串是 "",所以其长度为。请注意,你的答案必须是的长度,""是一个子序列,不是子串。

2024-09-07 11:14:47 1242

原创 C++ 重载运算符和重载函数

重载函数允许同一函数名接受不同类型或数量的参数。重载运算符允许开发者为自定义类型定义或修改运算符的行为。这些特性使C++具有更强的灵活性和可扩展性,有助于编写简洁、易读的代码。

2024-09-04 16:15:18 432

原创 文本左右对齐

这个算法主要通过计算每行可以放置的单词数量,智能地分配空格以确保两端对齐,处理单词数量不同的情况。最后一行和只有一个单词的行采用特殊处理以符合要求。

2024-09-02 22:11:24 830

原创 面向对象和面向过程(详解)

面向过程编程适合简单的程序开发,具有较高的执行效率和较低的学习难度。而面向对象编程则更适合开发复杂系统,它通过封装、继承和多态性,使得代码更易于维护、扩展和重用。在实际开发中,选择哪种编程范式通常取决于项目的复杂性和开发需求。在某些情况下,二者可以结合使用,C++作为支持多范式的语言就很好地体现了这一点。编程语言可以根据其设计思想和支持的编程范式来分类为面向对象语言、面向过程语言或多范式语言。面向对象语言。

2024-09-01 11:12:11 1917

原创 C++: 继承(超详解)

1.父类private成员无论以什么方式继承到子类中都是不可见的。这里的不可见是指父类的私有成员还是被继承到了子类对象中,但是语法上限制子类对象不管在类里面还是类外面都不能去访问它。2.父类private成员在子类中不能被访问,如果父类成员不想在子类外直接被访问,但需要在父类中访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。3.父类的私有成员在子类都是不可见;父类的其他成员在子类的访问方式就是访问限定符和继承方式中权限更小的那个。

2024-08-30 22:14:35 1040

原创 Z 字形变换

对于其余情况,考虑创建一个二维矩阵,然后在矩阵上按 Z 字形填写字符串 s,最后逐行扫描矩阵中的非空字符,组成答案。根据题意,当我们在矩阵上填写字符时,会向下填写 r 个字符,然后向右上继续填写 r−2 个字符,最后回到第一行,因此 Z 字形变换的周期 t=r+r−2=2r−2,每个周期会占用矩阵上的 1+r−2=r−1 列。时间复杂度:O(r⋅n),其中 r=numRows,n 为字符串 s 的长度。时间主要消耗在矩阵的创建和遍历上,矩阵的行数为 r,列数可以视为 O(n)。空间复杂度:O(r⋅n)。

2024-08-30 16:33:13 288

原创 C++ vector

的空间增长机制是其高效动态行为的基础。理解这个机制对于优化向量的使用、避免不必要的重新分配开销、以及在需要时手动调整容量是非常重要的。增:使用追加元素;使用insert()emplace()在指定位置插入元素。删:使用pop_back()移除最后一个元素;使用erase()移除指定位置的元素;使用clear()清空向量。改:通过索引或使用front()back()直接访问并修改元素。查:使用[]或at()访问元素;使用front()和back()访问首尾元素;使用data()获取底层数组指针。

2024-08-26 22:34:48 590

原创 ans = max(ans, prices[j] - prices[i]);这行代码的作用是什么

这行代码通常出现在求解类似于“买卖股票的最佳时机”这类问题的实现中,其目的是更新并记录当前能够获得的最大利润。具体来说,它计算了在某一天买入股票并在之后的一天卖出时可能获得的利润,然后将这个利润与之前计算的最大利润进行比较,保留其中较大的值。

2024-08-24 14:13:10 181

原创 nums.assign(newArr.begin(), newArr.end());这行代码的作用是什么

这种操作的好处是,在不手动处理旧元素的情况下,可以轻松地将一个。容器中的所有元素复制到。的所有元素赋值给另一个。

2024-08-24 14:10:14 117

原创 C++ “unordered_map”详解

是 C++ 标准库中的一种关联容器,提供了哈希表功能,用于存储键值对。与std::map不同,使用哈希表实现,因此元素的存储顺序是无序的,但查找、插入和删除的时间复杂度在平均情况下是常数时间O(1)。下面是一个关于如何使用的具体例子,包括插入元素、访问元素、遍历容器等操作。示例:统计字符串中每个字符出现的次数这里定义了一个 unordered_map,用于存储字符(char 类型)和它们的出现次数(int 类型)。遍历字符串text中的每个字符。对于每个字符c,如果它不是空格,则将的值加 1。

2024-08-23 11:26:49 246

原创 C++ 中指向类的指针

其中,ClassName是类的名称,是指针变量的名称。指向类的指针和普通指针在很多方面是相似的,因为它们都是指针,只不过指向的对象类型不同。两者的定义方式类似,只是类型不同。// 指向int类型的指针// 指向double类型的指针// 指向ClassName类对象的指针。

2024-07-24 22:14:19 434

原创 C++ this 指针

this指针是 C++ 中的一个特殊指针,它指向调用成员函数的对象本身。在每个非静态成员函数内部,this指针都是可用的。this。

2024-07-23 22:17:11 291

原创 C++ 拷贝构造函数

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。这句话的意思是在利用拷贝构造函数创建一个新的对象时,是通过复制现有对象的数据来初始化新对象。所以说,新对象将成为现有对象的副本。

2024-07-23 15:43:06 607

原创 C++ 类 & 对象

定义一个类需要使用关键字 class,然后指定类的名称,类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。class 类名{ //类名,类似一个公司名,由自己设置,最好向公司名一样简单易懂public://访问修饰符public,公共权限,这个修饰符下的成员函数和成员变量,类内可以访问,类外可以访问,//类似一个公司的普通技术和普通员工,公司内的人可以知道,公司外的人也可以知道。

2024-07-11 17:09:51 921

原创 C++中struct 和 class 的区别

在C++中,struct和class都是用来定义数据类型的复合类型。虽然它们在许多方面是相似的,但也存在一些关键的区别。

2024-07-08 22:24:15 201

原创 C++函数重载介绍

C++中的是指在同一个作用域内,可以有多个同名的函数,但这些函数的参数列表(参数的个数或类型)必须不同。重载函数可以根据传递的参数类型或数量的不同,调用相应的函数版本。这种特性使得函数可以有多种不同的实现方式,从而提高代码的灵活性和可读性。函数重载满足条件:(1)同一个作用域下。(2)函数名相同。(3)函数参数类型不同或者个数不同或者顺序不同。:在C++中,函数重载的条件之一是函数必须在同一个作用域下。作用域(Scope)是指程序中一个名字(如变量名、函数名等)可见并可以使用的区域。

2024-07-07 22:22:47 283

原创 C++函数占位参数介绍

在C++中,是一种在函数声明中使用的特殊参数,它们可以用于不同的场景,如重载解析或占位。占位参数在声明时没有名称,通常用于声明没有实现的函数,以便在未来实现时可以保持一致的函数签名。

2024-07-07 21:14:57 357

原创 Path 对象

对象使得文件和目录路径的操作更加方便和可读。它是 Python 3.4+ 版本引入的标准库,推荐在现代 Python 项目中使用它来处理文件路径。对象,您可以轻松地创建、合并、拆分和操作文件路径,而无需担心不同操作系统的路径分隔符差异。这使得代码更具可移植性。模块引入了一种更现代、更面向对象的方式来处理文件系统路径,相比于传统的字符串拼接和操作,它更加安全和直观。模块提供的一个类,用于操作文件系统路径(文件和目录路径)。对象是 Python 标准库中。

2023-10-17 15:25:15 178

原创 nn.InstanceNorm2d

通常,这个值等于输入张量的通道数,以保持每个通道的统计信息独立。对于归一化的每个通道,会计算该通道上所有实例的均值和方差,并用它们来进行归一化。实例归一化与批次归一化(Batch Normalization)类似,但不同的是,实例归一化是在每个通道上独立进行的,而不是在整个批次上进行的。这使得实例归一化在小批次大小或单个实例的情况下更稳定。有助于处理不同通道的特征之间的尺度和偏移问题,使网络更容易学习到不同通道的特征表示。: 这是PyTorch中的实例归一化模块,用于对输入数据执行实例归一化操作。

2023-10-16 09:29:03 1035 1

原创 上采样操作

是一个非常有用的工具,可用于图像处理、神经网络中的上采样操作以及其他需要改变尺寸的任务。: 在深度学习中,上采样操作通常用于神经网络中的一些层,如转置卷积层,用于从低分辨率特征图生成高分辨率特征图。最后,它将原始图像和上采样后的图像进行可视化比较,以展示上采样操作的效果。可以是一个整数,也可以是一个包含两个整数的元组,表示输出的高度和宽度。上采样是一种将输入张量的尺寸(大小)增加的操作,通常用于图像处理和神经网络中的一些任务。: 有时,您可能需要将输入张量的大小调整为特定的尺寸,以匹配网络的输入要求。

2023-10-16 09:07:29 395 1

原创 pytorch版本的tensorboard如何使用

TensorBoard是一个由Google开发的用于可视化机器学习和深度学习实验结果的工具。它通常与深度学习框架(如TensorFlow、PyTorch等)一起使用,以帮助研究人员和工程师更好地理解模型的性能、训练过程和内部结构。:您可以轻松地跟踪模型的训练指标,如损失函数、准确率、学习率等,并通过图表和曲线图来呈现这些信息。这有助于了解模型的训练进展情况。:TensorBoard可以可视化神经网络模型的结构,显示各个层次和连接。这对于理解模型的架构和排查问题非常有帮助。

2023-09-03 16:17:18 511

原创 permute

操作可以帮助我们重新排列数组的维度,以满足特定计算或数据处理需求。以下是一个具体的例子,假设我们有一个表示图像数据的张量,其维度为。,这样我们就能够更方便地在深度学习模型中使用这个张量,尤其是在需要对通道维度进行操作的情况下,比如卷积操作。操作允许我们在不改变数据本身的情况下,重新组织张量的维度,以适应特定的计算需求或模型结构。,其中 32 是批量大小,64x64 是图像尺寸,3 是 RGB 通道。,我们可能希望将通道维度与高度维度交换,以便在某些操作中更方便。当涉及到多维数组(如张量)时,

2023-08-24 21:24:32 229 1

原创 PyTorch中,contiguous()

连续(contiguous)内存块是指一系列数据在内存中的存储是相邻的、没有间隔的。当数据是连续存储时,计算机处理器可以更快地获取数据,因为它可以按照内存地址的顺序依次读取数据,而不需要在不同的内存位置之间进行跳转。方法时,PyTorch会创建一个新的连续的Tensor,它会重新排列数据以确保连续的内存布局。当一个Tensor在内存中的存储不是连续的时候,它可能会影响一些操作的性能和可行性。方法的作用就是将一个不连续的Tensor变成连续的,从而确保内存块的布局是连续的。,并再次检查了它的连续性。

2023-08-23 21:49:09 1213

原创 一阶中心距,二阶中心距,三阶中心距,四阶中心距

中心距提供了一种方式来量化数据的分布特征,从而更好地理解数据的形态、集中趋势和离散程度。不同的中心距对于不同的分布类型具有不同的敏感度,因此在分析数据分布时,需要结合各个中心距一起考虑。中心距是在统计学和概率论中用于描述数据集中数据点与其平均值之间的距离的概念。它是一种衡量数据分布形状、集中程度和离散程度的方法之一。对于一组数据 x1,x2,....xn,其平均值(均值)为。其中,k 是一个正整数。

2023-08-13 21:56:36 5223 1

空空如也

空空如也

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

TA关注的人

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