自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 有关于常量的一节知识

常量的寻址限制是类型系统为防止内存滥用而设计的安全机制,而非物理限制。变量默认具有内部链接属性,若用于常量表达式(如数组大小),可能被优化为编译期常量(类似 #define)。变量视为编译期常量,直接嵌入机器码(如常量折叠),无需为每个编译单元生成全局符号。:在编译期可计算出结果的表达式,用于要求编译时常量的场景(如数组大小、模板参数)。仅为类型约束,变量仍存储在内存中(如.data 段),但编译器禁止显式修改。:内部链接和常量表达式允许更激进的编译优化(如内联、常量折叠)。

2025-05-28 19:41:29 793

原创 读书感悟[2]

基于红黑树实现,元素有序且唯一。插入、删除和查找操作的时间复杂度为 O (log n)。:基于哈希表实现,元素无序但唯一。平均插入、删除和查找操作的时间复杂度为 O (1)。:键(key)必须唯一。若仅需存储唯一元素,可使用值(value)为占位符的 map。与指针区分:引用必须初始化且不可重新绑定,而指针可空且可变。:分配内存但不初始化,值为未定义(垃圾值)。:显式初始化为指定值(如 42)。语法简洁:避免显式解引用(如。语义明确:常用于函数参数(如。:值初始化,内置类型(如。),提高代码可读性。

2025-05-25 20:37:19 421

原创 一本通1307:【例1.3】高精度乘法 & 1308:【例1.5】高精除

此题的关键是要模拟竖式运算,竖式运算是一种直观的分步计算方式,适用于需要按位操作的四则运算,通常用于整数的加、减、乘、除等运算。,既能应对输入边界(如超长数字),又能简化索引处理(如从索引 1 开始存储)。高精度计算是模拟算法的一种,通过字符串和整数数组的使用,将加减乘除的竖式运算模拟出来,达到计算的目的。1.将字符串数据存到整型数组中 2.模拟算法,不同的算式对应不同的模拟代码 3.将保存的数据转移。2.逐位相乘:用乘数的每一位乘以被乘数的每一位,结果按位累加(注意进位)。望各位小伙伴们多多指教。

2025-05-24 19:32:52 968

原创 读书感悟[1]

/ 数组最大长度。

2025-05-24 01:32:14 977

原创 你不得不读的好书

记录一波我知道的几本好书 欢迎大家在评论区补充(ps:以下记录的书籍我都有电子版 如有需要可私信~)ps:希望有生之年能都读完。

2025-04-18 21:23:32 114

原创 一本通 2063:【例1.4】牛吃牧草 & 1005:地球人口承载力估计

需要注意的仍是格式问题哦,在输出时如果不对其精度进行设置,就可能会出现从“int”转换到“float”,可能丢失数据的提示。为什么把这两道题放在一起呢?就是因为这两道题很类似,都是很简单的数学题,只要你会列出数学等式,你就学会这道题了!望各位小伙伴们多多指教(ps:先去干饭啦 等会回来接着补今天的任务 目标就是一天一篇lalalala)下面把计算过程展示给大家。

2025-04-18 19:05:01 271

原创 一本通 2061:【例1.2】梯形面积

在计算机中,数值的存储和处理是基于二进制的。而十进制小数和二进制小数之间并非总是能精确转换,这就导致了部分十进制小数在计算机里以二进制形式存储时会出现精度损失。这主要是因为计算机在存储浮点数时,使用的存储空间是有限的,像。C++中的格式化输出主要是有3种形式,第一种是使用流操作算子(流操纵算子),第二种是成员函数,第三种则是使用标准输出printf(个人觉得第三种形式更为简单通用)例如 0.14 不能用有限位二进制小数精确表示,所以计算机只能截取一定位数的二进制小数来近似表示它,这就造成了精度损失。

2025-04-15 21:21:14 779

原创 cout和printf的区别

printf是C语言中的标准输出函数,而cout是C++中引入的一个对象,它是iostream库的一部分。cout是一个全局对象,它通过运算符重载与<<运算符配合使用,不需要指定数据类型,编译器会自动根据传入数据的类型选择合适的重载版本。printf是一个变参函数,它不进行类型检查,这可能导致类型不匹配的问题,因此在某些情况下它不是类型安全的。printf是一个函数,需要明确指定输出的格式,如%d用于整数,%f用于浮点数,%s用于字符串等。cout提供了类型安全的输出,因为它是基于运算符重载实现的。

2025-04-15 18:28:38 255

原创 蓝桥杯比赛对于时间和空间的限制

时间限制:通常为1秒、2秒或3秒,要求你编写高效的算法,通常时间复杂度应为O(n log n)或更优。空间限制:通常在64MB到512MB之间,你需要设计节省内存的算法,避免使用过大的数据结构。在比赛中,你需要根据这些限制来合理选择算法并进行优化。通常,问题的输入规模和限制都已经给出,你需要根据这些信息计算出合适的算法时间复杂度和空间复杂度。

2025-04-08 21:54:06 971

原创 C/C++基础知识复习(53)

三范式就像整理房间的规则,确保数据存储的合理性和高效性。:每个物品都放在固定的位置,不能乱放。:每个物品都放在它专属的抽屉里。:抽屉里不能放其他抽屉的钥匙。

2025-03-06 10:45:59 775

原创 C/C++基础知识复习(52)

MySQL是一个关系型数据库管理系统,其架构包括连接层、查询缓存、解析器、优化器和存储引擎等组件。MySQL就像一个大工厂,分为多个部门,每个部门负责不同的任务。

2025-03-06 10:43:29 218

原创 C/C++基础知识复习(51)

​RAII:通过构造函数获取资源,通过析构函数释放资源,确保资源管理的安全性。​智能指针:自动管理动态分配的内存,避免内存泄漏。​备忘录模式:通过将对象的状态保存到备忘录中,实现状态的存储与恢复。​适用场景:需要保存和恢复对象状态的场景,如撤销操作、游戏存档等。

2025-03-06 10:38:27 435

原创 C/C++基础知识复习(50)

工厂模式是一种创建型设计模式,定义一个用于创建对象的接口,但让子类决定实例化哪个类。状态模式是一种行为设计模式,允许对象在其内部状态改变时改变其行为。一个电灯有“开”和“关”两种状态,我们需要根据状态改变它的行为。工厂模式就是通过一个“工厂”来创建对象,就像你去工厂定制一辆车。你需要创建不同类型的车(轿车、卡车),但不想直接调用构造函数。对象的状态就是它的“心情”或“模式”,比如灯的开关状态。定义一个工厂类,根据输入参数创建不同的对象。使用状态模式,将状态抽象成一个类。

2025-03-06 10:32:50 278

原创 C/C++基础知识复习(49)

克隆是指创建一个与现有对象完全相同的副本。深克隆会复制对象的所有数据,而浅克隆只复制对象的引用。单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。单例模式就是确保一个类只有一个实例,就像一个国家只有一个总统。你有一个打印机类,希望整个程序只有一个打印机对象。克隆就是复制一个对象,就像复印一份文件。你有一张照片,想复制一张一模一样的。方法,返回对象的深拷贝。

2025-03-06 10:20:13 192

原创 C/C++基础知识复习(48)

序列化就是把对象“打包”成一种可以存储或传输的格式(比如二进制、JSON、XML),反序列化就是把这个“包”解压,重新还原成对象。假设你有一个游戏角色,它的等级和金币需要保存到文件中。序列化就是把等级和金币写入文件,反序列化就是从文件中读取数据并恢复角色。对象的生命周期就是它从“出生”到“死亡”的过程。我们需要确保对象在合适的时候被创建和销毁,避免内存泄漏或资源浪费。对象的生命周期是指对象从创建到销毁的整个过程。生命周期管理包括对象的创建、使用和销毁。

2025-03-06 10:14:47 396

原创 C/C++基础知识复习(47)

接口继承:用来定义一组必须实现的方法,父类只声明方法签名,不提供具体实现,子类必须实现这些方法。实现继承:用来继承父类已实现的方法,子类可以直接使用父类的方法,或者重写它们。多态与性能的平衡:避免不必要的虚函数调用(如果不需要多态),减少继承层级,这样可以提高程序的执行效率。

2025-02-25 19:16:39 450

原创 计算机网络与通信复习

接收端收到的一定是一个线性叠加的结果,首先在收到一个序列之后,我们要用收到的这个序列和相应的站点作内积运算:把两个向量按位相乘然后结果相加,最后做一个归一化处理(除以分量的个数) 如果结果是正一说明该站点发送的是1,如果结果是负一,说明他发送的是0,如果结果是0,说明该站点没发送数据。集线器只是把信号集中在一起,所以它会产生广播风暴,多用户放一起会进行信道的征用,出现碰撞传输,连接在集线器上的多个站点共享带宽,而交换机不会,它工作在链路层,支持多端口,可以进行无碰撞传输,它是所有的站点都独享所有的带宽。

2024-12-30 14:38:31 1048

原创 C/C++基础知识复习(46)

动态绑定:通过使用virtual关键字在基类中声明虚函数,并通过基类指针或引用来调用派生类的重写函数,从而实现动态绑定。内存管理:C++ 提供了手动内存管理机制(new和delete),通过栈和堆内存管理不同类型的数据。此外,C++11 引入了智能指针(如和)来自动管理内存,减少内存泄漏的风险。

2024-12-25 00:09:11 960

原创 C/C++基础知识复习(45)

数据隐藏:通过使用private或protected访问修饰符,并通过public方法进行数据访问和操作来实现。异常处理:通过trythrow和catch来处理异常,能够捕获并处理程序中的错误。可以使用标准异常类或自定义异常类来表达不同的错误情况。

2024-12-24 23:54:23 401

原创 C/C++基础知识复习(44)

是面向对象编程(OOP)中的一个重要概念,指的是将对象的内部状态(数据成员)隐藏在类的外部,只通过公共的方法(通常是成员函数)来访问和修改这些数据。在需要动态加载插件的系统中,多态性使得可以通过统一的接口与插件进行交互,而不需要在编译时确定插件的具体类型。通过封装技术,可以将类的数据和操作数据的函数捆绑在一起,外部只能通过公共的接口(即类的公共方法)来与类的内部数据交互,从而实现数据隐藏。是面向对象编程(OOP)中的一个重要特性,指的是不同的对象可以通过相同的接口来表现不同的行为。)和继承机制来实现。

2024-12-23 21:15:09 912

原创 C/C++基础知识复习(43)

运算符重载是指在 C++ 中为现有的运算符定义新的行为,使得它们能够用于用户定义的数据类型(如类或结构体)。通过运算符重载,可以让自定义类型像内置数据类型一样进行运算,例如加法、减法等操作。运算符重载通过定义一个特殊的函数来实现,称为运算符函数。这些函数通常是成员函数或友元函数。public: // 运算符重载作为成员函数ReturnType operator符号 (参数列表) {// 函数体} };示例:重载加法运算符假设我们有一个表示二维向量的类Vector2D,希望能够使用。

2024-12-23 20:42:55 1201

原创 C/C++基础知识复习(42)

纯虚函数是没有实现的函数,它规定了派生类必须实现该函数,确保接口的统一性和多态性的实现。抽象类是含有至少一个纯虚函数的类,不能实例化对象,它主要作为派生类的基类,定义公共接口并强制派生类实现具体功能。在面向对象编程中,纯虚函数和抽象类发挥着至关重要的作用,通过强制派生类提供特定功能和统一接口,提高了程序的可维护性、可扩展性和灵活性。

2024-12-09 21:10:48 409

原创 C/C++基础知识复习(41)

多态性(Polymorphism)是面向对象编程中的一个重要特性,它允许不同的对象通过相同的接口表现出不同的行为。多态性使得程序能够根据对象的实际类型来决定调用哪个方法,而不是依赖于对象的静态类型。这种能力使得同一接口可以根据对象的不同类型有不同的实现,从而增加了系统的灵活性和扩展性。在C++中,多态性通过虚函数和基类指针或引用来实现。编译时多态(静态多态):通过函数重载(Function Overloading)和运算符重载(Operator Overloading)实现。

2024-12-07 15:36:48 914 1

原创 C/C++基础知识复习(40)

继承性(Inheritance)是面向对象编程的一个基本特性,它允许一个类从另一个类派生,继承父类的属性和方法,并可以扩展或修改这些属性和方法。继承实现了代码的重用,允许创建一个新类时不必从头开始,而是从已有的类中继承基础功能。在C++中,继承通过类之间的“is-a”关系来实现。一个类(派生类)可以继承另一个类(基类)的成员(属性和方法)。通过继承,派生类能够直接访问基类的公共(public)和保护(protected)成员,但不能访问基类的私有(private)成员。

2024-12-07 14:55:44 359

原创 C/C++基础知识复习(39)

封装性(Encapsulation)是面向对象编程中的一个重要概念,它指的是将对象的状态(数据)和行为(方法)绑定在一起,并且通过访问控制来隐藏对象的内部细节,只暴露必要的接口。封装的目标是防止外部代码直接访问或修改对象的内部数据,从而保证数据的安全性和一致性。在C++中,封装通过类(class)来实现。类的成员变量通常声明为私有(private),只能通过公共(public)方法来访问和修改。这样可以控制对数据的访问,确保数据不会被无意或恶意修改。// 私有数据成员int age;

2024-12-07 14:36:59 426

原创 C/C++基础知识复习(38)

两者在使用上的选择,通常取决于具体的应用场景以及对性能、存储、兼容性等需求的权衡。

2024-12-05 12:48:10 282

原创 C/C++基础知识复习(37)

(也叫自动类型转换)是指在表达式中,程序自动将一种数据类型的值转换为另一种兼容类型的值,而无需开发者显式地进行转换。这通常发生在不同数据类型之间进行操作时,编译器自动完成类型转换。

2024-12-02 21:05:41 477

原创 C/C++基础知识复习(36)

通过函数重载,程序员可以使用相同的函数名称处理不同类型或数量的参数,而不需要为每种情况创建不同的函数名称。如果参数类型不完全匹配,编译器还会进行类型转换(如自动将整数转换为浮点数),选择最合适的重载版本。编译器在编译时会根据函数的名称、参数类型、参数数量以及参数的顺序等信息,自动生成一个唯一的符号(名称修饰),用于区分不同的重载版本。:虽然函数的返回类型不同可以作为区分,但单纯通过返回类型是无法实现函数重载的,因为返回类型不会影响编译器选择函数版本的规则。函数重载的实现原理依赖于编译时的。

2024-12-02 16:28:38 912

原创 各大常见编程语言应用领域

不同编程语言因其特性和设计目标而适用于不同的应用领域。

2024-12-01 19:47:27 975

原创 C/C++基础知识复习(35)

内存对齐通过优化数据存储位置来提升访问效率、简化硬件设计,并满足平台要求,是现代计算机系统中非常重要的优化机制。

2024-12-01 12:01:57 246

原创 C/C++基础知识复习(34)

自动类型推导auto用于声明变量并自动推导类型。decltype用于获取表达式的类型。右值引用与移动语义右值引用&&)表示对临时对象的引用,主要用于实现移动语义。移动语义通过右值引用使对象的资源能够被转移,而非复制,从而提高程序的效率,特别是涉及大对象或资源密集型对象时。

2024-11-30 14:50:46 877

原创 C/C++基础知识复习(33)

volatile主要用于防止编译器优化内存读取,确保变量始终反映最新的内存值,通常用于硬件、寄存器访问或多线程同步中。const主要用于标识变量不可更改,且可以帮助编译器进行优化,常用于常量值。

2024-11-30 14:09:17 662

原创 C/C++基础知识复习(32)

函数对象(Function Object)是一个可以像函数一样调用的对象。换句话说,函数对象是重载了operator()运算符的类或结构体的实例。由于 C++ 中一切都是对象,函数对象实际上是一个类的实例,它的行为类似于函数,因此也被称作“可调用对象”。函数对象是一个类的实例:普通函数是一个独立的代码块,而函数对象是一个有状态的对象,通常通过类来实现。函数对象可以保存状态:普通函数不能有成员变量,不能保存任何数据,而函数对象可以有成员变量来存储数据。函数对象可以在调用时传递不同的参数:通过重载。

2024-11-28 12:56:45 1332

原创 C/C++基础知识复习(31)

多继承(Multiple Inheritance)是指在 C++ 中,一个类可以继承自多个基类,从而拥有多个基类的特性和行为。具体来说,子类可以通过继承多个父类,继承它们的数据成员和成员函数。虚继承(Virtual Inheritance)是 C++ 中的一种机制,用于解决多继承中的菱形继承问题。通过虚继承,确保从多个路径继承的同一个祖先类只有一份实例。

2024-11-27 19:49:19 728

原创 C/C++基础知识复习(30)

在 C++ 中,Lambda 表达式是一种可以定义匿名函数的机制,可以在代码中快速创建一个内联的函数对象,而不需要显式地定义一个函数。Lambda 表达式通常用于简化代码,尤其是当需要传递一个简单的函数给 STL 算法或作为回调时,十分方便。[捕获列表](参数列表) -> 返回类型 { // 函数体 };捕获列表[]):指定外部变量如何在 Lambda 中使用,捕获外部作用域中的变量。参数列表:指定 Lambda 函数的参数(可选)。返回类型。

2024-11-26 18:54:03 1884

原创 C/C++基础知识复习(29)

usingtypedef和 using都用于为现有类型或模板类型创建别名,帮助简化代码。typedef是传统的类型别名方式,而 using是 C++11 引入的更现代、更简洁的方式,特别是在模板类型别名的定义上更为灵活。对于模板类型别名,using声明比typedef更具可读性和表达能力。

2024-11-25 17:28:44 395

原创 C/C++基础知识复习(28)

在 C++ 中,模板特化和偏特化是两种针对模板类型的高级用法,用于在某些特定情况下对模板的行为进行特殊处理。模板特化(Full Specialization)模板特化是对模板的某个具体类型提供专门的实现。这种特化完全替代了泛型模板的实现,适用于特定的类型。模板偏特化(Partial Specialization)模板偏特化是为一类特定的模板参数提供部分特定的实现,而不是对某个特定类型进行完全特化。偏特化只适用于类模板,而函数模板不能偏特化。模板特化:针对特定类型提供完全定制的实现。模板偏特化。

2024-11-24 12:43:33 434

原创 C/C++基础知识复习(27)

是C++中对象所有权管理的两种机制,主要在对象初始化、赋值或传参时体现。通过合理使用智能指针,可以显著减少手动内存管理带来的复杂性和错误风险。

2024-11-22 14:54:14 1212

原创 C/C++基础知识复习(26)

移动语义(Move Semantics)是 C++11 引入的一个概念,旨在通过移动资源而非拷贝资源来提高程序的性能。它允许将资源(例如内存、文件句柄等)从一个对象转移到另一个对象,而不是创建资源的副本。在 C++ 中,资源管理通常是通过拷贝构造函数和赋值操作符来实现的。但是,对于某些对象,尤其是大对象,拷贝操作会非常昂贵。移动语义通过允许对象"窃取"资源(例如堆内存)而非复制它们,避免了昂贵的拷贝操作,极大地提高了性能。提升性能。

2024-11-22 12:50:35 411

原创 C/C++基础知识复习(25)

初始化列表(Initialization List)是在 C++ 构造函数的声明中,通过冒号()来初始化类成员变量的一种方式。它在构造函数执行之前,首先对类成员变量进行初始化。double b;public:// 使用初始化列表初始化成员变量// 构造函数体(可选)} };在上面的代码中,a(x)和b(y)就是初始化列表。它们的作用是将参数x和y分别赋值给类的成员变量a和b。作用性能优化。

2024-11-20 19:25:52 481

空空如也

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

TA关注的人

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