自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 for循环,while循环,do while循环三者的区别是什么

​**for循环**:结构紧凑,适合固定次数的迭代。​**while循环**:灵活,适合条件驱动的循环。​**do...while循环**:保证至少执行一次,但需谨慎使用。

2025-03-09 22:01:33 431

原创 顶层const和底层const

在C++中,const关键字可以用于定义常量,它主要有两种使用形式,分别是顶层const和底层const。理解这两种const的作用是掌握C++类型系统的关键。

2024-12-29 16:22:39 392

原创 函数返回数组指针

C++倾向于避免这种隐式拷贝,因为它会导致不可控的性能开销。

2024-12-27 10:08:27 973

原创 异常处理:try-catch(详解)

中的异常处理主要依靠三个关键词:try、catch。

2024-12-22 10:54:32 746

原创 size_t(详解)

是 C 和 C++ 中一个无符号整数类型,主要用于表示对象的大小或数组的索引。它在标准库中定义,并且其实际类型通常是。是一个专门用于表示内存大小和对象大小的类型,是C/C++中处理相关操作时的标准选择。,具体取决于平台的位数(32位或64位系统)。例如,C++ 标准库中的许多函数(如。类型,以确保返回的大小总是正值。或 unsigned long。

2024-12-17 14:43:01 190

原创 C++ 引用

引用是C++中的一种高效特性,提供了一种操作变量的便捷方式,同时避免了指针的复杂性和潜在风险。通过左值引用、常量引用和右值引用,C++实现了灵活高效的变量访问和操作方式,在参数传递、返回值优化和对象管理中发挥了重要作用。

2024-12-16 21:24:55 886

原创 形参和实参的区别

实参(实际参数)**是与函数调用相关的两个重要概念。形参与实参的交互方式,决定了它们之间是否会相互影响。形参是实参值的拷贝,修改形参不会影响实参。在编程语言中,**形参(形式参数)函数需要两个整数作为输入。

2024-12-16 14:34:11 751

原创 列表(list)

💻示例代码💻cout <<"初始化list为:";cout <<"Reverse后的list为:";return 0;初始化list为:1 2 0 3 4 5Reverse后的list为:5 4 3 0 2 1⑧ assign()——将值赋给容器assign()方法用于将链表中的元素替换为新的元素序列。它可以接受不同形式的参数,提供了两种重载形式。第一种形式接受迭代器范围作为参数,用于将另一个容器或数组中的元素复制到链表中。它会将链表清空,并将指定范围内的元素复制到链表中。

2024-11-13 20:50:54 1181

原创 预处理、编译、汇编和链接

把一些#define的宏定义完成文本替换,然后将#include的文件里的内容复制到.cpp文件里,如果.h文件里还有.h文件,就递归展开。在预处理这一步,代码注释直接被忽略。过程将上一步的汇编代码(main.s)转换成机器码(machine code),这一步产生的文件叫做目标文件(main.o),是二进制格式。只是把我们写的代码转为汇编代码,它的工作是检查词法和语法规则,所以,如果程序没有词法或则语法错误,那么不管逻辑是怎样错误的,都不会报错。每个步骤都会生成对应的文件。才能变成可执行文件。

2024-11-09 20:55:14 286

原创 单字节字符串、宽字节字符串

在C和C++中,字符串可以根据字符编码方式划分为单字节字符串和宽字节字符串,主要用于支持不同的字符集和多语言需求。

2024-11-06 11:06:58 235

原创 C++虚函数(详解)

在基类中使用virtual关键字修饰的成员函数称为虚函数。虚函数是 C++ 中实现多态性的重要机制,它允许在派生类中重写基类中的函数。虚函数的核心特性在于,它使得通过基类指针或引用调用函数时,可以根据实际对象的类型选择相应的函数实现。

2024-10-31 15:27:37 4339

原创 #include <typeinfo>

头文件的作用是支持在 C++ 中使用运行时类型信息。它通过typeid操作符和type_info类提供了对象类型的识别、比较和相关信息获取功能,尤其在处理多态和动态类型时非常有用。

2024-10-31 10:27:34 226

原创 C++extern关键字(详解)

extern "C"是在 C++ 中与 C 语言代码进行链接时的关键工具,它确保函数的名称不会被 C++ 编译器进行修改,保证了 C 和 C++ 代码之间的兼容性。通常在需要混合 C 和 C++ 代码的场景中使用,特别是调用 C 标准库或其他用 C 编写的库时。

2024-10-30 17:09:42 1146

原创 C++模板(详解)

C++ 模板是一个强大的编程工具,它允许我们编写通用的代码,适用于多种数据类型,从而提高代码的复用性和灵活性。模板包括函数模板和类模板,能够根据不同的类型进行实例化,编译时自动生成相应的代码。模板不仅提高了编程效率,还提供了更好的类型安全性。

2024-10-23 22:02:49 790

原创 代码解释(10.20)

保留了默认构造函数(但受保护,外部无法直接调用),允许类内部的控制方式来创建实例。:删除了拷贝构造函数,防止通过拷贝创建新实例。:删除了拷贝赋值运算符,防止通过赋值来复制对象。这三部分共同作用,确保Singleton类的实例是唯一的,符合单例模式的设计要求。

2024-10-20 21:32:37 467

原创 template <typename T>详解

提高代码的通用性和可复用性:模板使得函数和类可以接受不同类型作为参数,避免了大量的代码重复。编译期类型检查:模板代码在编译时实例化为具体的类型,确保类型安全性。简化代码维护:通过减少代码重复,维护工作只需集中在模板定义处。在泛型编程中,是一种强大的工具,它使代码更灵活、更具扩展性。

2024-10-20 21:26:01 452

原创 override

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

2024-09-30 09:53:07 627

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

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

2024-09-26 17:20:11 3237

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

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

2024-09-24 16:06:29 439

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

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

2024-09-23 10:29:55 951

原创 c++ static(详解)

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

2024-09-19 22:04:58 976

原创 STL基本容器

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

2024-09-18 16:40:56 367

原创 GDB调试

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

2024-09-16 13:54:18 463

原创 最小覆盖子串

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

2024-09-16 11:05:05 1235

原创 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 23139 3

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

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

2024-09-13 22:11:53 1231

原创 gcc 与 g++ 区别

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

2024-09-13 20:31:41 779

原创 C++ override 关键字用法

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

2024-09-12 20:42:04 436

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

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

2024-09-11 22:16:19 1772

原创 #include <netinet/in.h>

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

2024-09-11 21:14:12 1262

原创 ping操作

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

2024-09-11 10:39:34 1130

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

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

2024-09-08 21:26:22 2934

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

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

2024-09-07 11:14:47 2168

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

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

2024-09-04 16:15:18 479

原创 文本左右对齐

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

2024-09-02 22:11:24 875

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

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

2024-09-01 11:12:11 3002

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

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

2024-08-30 22:14:35 1147

原创 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 302

原创 C++ vector

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

2024-08-26 22:34:48 655

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

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

2024-08-24 14:13:10 240

空空如也

空空如也

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

TA关注的人

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