自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

永远怀着至诚之心拥抱世界

自身学习成长的切片和剪影

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

原创 软件工程(应试版)图形工具总结(一)

1、顺序 以确定次序连接两个或多个分量;2、选择 从两个或多个可能的元素中选取一个;3、重复 即把指定的分量重复零次或多次。​符号​名称​含义​示例等价于(定义为)表示左侧与右侧等价,或左侧被定义为右侧内容。姓名 = 字符串→ 姓名字段定义为字符串类型。和(连接)连接两个分量,表示二者共同组成一个整体。姓名 + 地址→ 姓名和地址组合成一个结构。[ ]或(选择)从方括号内的多个分量中选择一个,通常用 `` 分隔选项。{ }重复重复花括号内的分量,可用上下限标注重复次数(如{数据}₁…₅。

2025-04-02 01:00:00 1256 1

原创 数据结构与算法分析:树与哈希表(二)

定义左子树所有节点值 < 根节点值 < 右子树所有节点值的有序二叉树。数学表示∀节点X,设左子树为L,右子树为R,则满足 max(L) ≤ X ≤ min(R),即支持高效查找、插入、删除(时间复杂度 O(log n))。时间复杂度平衡时:树高≈log₂n → O(log n)最坏情况:树高=n → O(n)(如插入有序数据1→2→3→4)应用场景字典查询:通过字母顺序快速定位单词数据库索引:B+树基于BST思想加速数据检索示意图8/ \3 10/ \ \1 6 141.2. 节点结构。

2025-03-31 03:00:00 1040

原创 数据结构与算法分析:树与哈希表(一)

背景:链表处理大量数据时,线性访问耗时多。二叉查找树多数操作平均运行时间为 O (log N),相对于链表树更加高效。递归定义是一种通过自我引用来描述数据结构或算法的方式。对于树这种分层结构,递归定义尤其自然,因为每个子树本身也是一棵树。​基线条件(Base Case)​:定义最简单、不可再分的情况(通常是空树或叶子节点)。​递归条件(Recursive Case)​:通过组合更小的树来定义更大的树。通用树的递归定义​空树​(基线条件),或者​一个根节点,连接若干个子树。

2025-03-31 00:00:00 1283

原创 数据结构与算法分析:表、栈和队列(一)

ADT的核心在于理解接口与实现的分离,以及在不同场景下权衡时间、空间与工程复杂度1.1. ADT的本质:逻辑抽象与接口契约​定义:ADT是数据对象及其操作的数学描述,仅定义 ​​“行为”​​(操作语义),不涉及具体存储结构。​关键特征​封装性:隐藏内部实现,仅暴露操作接口。​独立性:同一ADT可用不同数据结构实现(如栈可用数组或链表)。​契约性:操作需满足前置/后置条件(如栈的pop要求非空)。int data;} Node;

2025-03-30 04:00:00 1153

原创 C++:allocator类(动态数组续)

这个只是简单模仿vector容器的核心机制,实际标准库实现会更复杂(包含异常安全、优化策略等很多东西):无法适配不同的内存管理策略(如内存池、共享内存等)。:解耦内存分配与对象构造,提供更灵活的内存管理。:内存池、性能优化、特殊内存区域(如共享内存)。等)默认使用的内存分配器。:将内存分配和对象构造合并为一个操作。6. 包含简单的扩容策略(容量翻倍):先分配原始内存块,但不构造对象。:在已分配的内存上手动构造对象。:针对特定场景优化内存分配速度。:手动析构对象,但不释放内存。:预分配大块内存,减少碎片。

2025-03-30 00:00:00 515

原创 数据结构与算法:算法分析

本章系统阐述了算法时间复杂度的分析方法与原则:​渐近符号:大O(上界)、Ω(下界)、Θ(紧确界)、小o(严格上界)通过比较函数增长率,忽略常数和低阶项,揭示算法性能的渐近本质。例如,快速排序最坏为O(N²),但实际平均接近Θ(N log N)。​运行时间法则:​循环:次数乘积(嵌套循环)或求和(顺序语句),保留最高阶项。​分支:取最坏分支时间。​局限性:最坏情形分析可能高估实际需求(如希尔排序复杂度未完全解决),需结合实际问题收紧分析或依赖实验。​设计启示:优先选择低增长率算法

2025-03-30 00:00:00 854

原创 C++ :动态内存与智能指针

1. 动态内存动态内存允许程序在运行时(而非编译时)按需分配堆内存,用于管理不确定生命周期或大小的对象,或需要跨作用域共享的数据。核心操作newnew[]:分配内存并构造对象。deletedelete[]:销毁对象并释放内存。使用场景动态数据结构(如链表、树、图)。大对象(避免栈溢出)。工厂模式返回不确定类型的对象。对象需在多个作用域间共享。手动管理痛点内存泄漏:忘记调用delete释放内存。悬空指针:提前释放内存后,其他指针仍访问该内存。异常不安全:代码异常可能导致delete。

2025-03-29 00:30:00 541

原创 C++:动态数组

C++的静态数组(如 )在编译时确定大小,无法在运行时动态调整:示例:若需要存储用户输入的未知数量元素,静态数组无法灵活处理。动态数组(如 )解决静态数组的痛点:以 为例,核心机制如下:​3.2 扩容机制当 时,添加新元素会触发扩容:均摊时间复杂度:虽然单次扩容是 O(n),但均摊到每次操作后仍是 O(1)(类似“摊还分析”)。 ​T:数组元素的类型(如 、)。 ​get_size():数组长度,与固定大小的数组(如 )不同, 允许在运行时动态决定数组长度。这在以下场景中非常有用:①

2025-03-29 00:30:00 585

原创 C++:有序关联容器的插入与删除

通过键值删除返回删除的元素数量(对于set/map为0或1)两个子节点:找到后继节点,交换内容后删除后继节点。插入操作:强异常安全保证(失败时容器状态不变)平均和最坏时间复杂度均为O(log n)平均和最坏时间复杂度均为O(log n)找到合适位置后创建新节点(通常为红色)返回被删除元素的下一个元素的迭代器。删除操作:不抛出异常(无失败情况)是一个布尔值,若插入成功则为。调整红黑树性质(旋转和重新着色)调整红黑树性质(旋转和重新着色)是指向插入元素的迭代器,一个子节点:用子节点替代。

2025-03-28 00:00:00 754

原创 C++:无序关联容器

C++ 无序关联容器(unordered_set、unordered_map等)基于哈希表实现。其元素无序,平均操作时间复杂度为 O(1),最坏为 O(n)。底层是动态桶数组,用链地址法解决冲突,负载因子超 1.0 时扩容。C++无序关联容器(如unordered_set、unordered_map)基于哈希表,元素无序。平均操作时间复杂度O(1),最坏O(n) 。底层为动态桶数组,借链地址法解决冲突,负载因子超1.0时扩容。操作接口与有序容器相似,有桶管理接口。自定义类型作键需自定义哈希和相等比较。

2025-03-28 00:00:00 1505

原创 C++:有序关联容器的遍历和查找

C++ 有序关联容器(如 set、map 等)迭代器是双向迭代器,默认按关键字升序遍历,可自定义规则,键为 const 不可改,值可改。通过 begin ()/end ()、rbegin ()/rend () 获取正反向迭代器,用 find () 等查找元素,处理重复键用 equal_range ()。插入时迭代器通常不失效,删除时仅被删元素的迭代器失效。反向迭代器遍历方向相反,其 base () 方法可获取对应正向迭代器,可用于统计单词频率等应用。

2025-03-27 01:15:00 873

原创 C++ :关联容器

关联容器通过 ​高效存储和访问元素,与顺序容器(如vector)不同,它们的元素位置取决于键值,而非插入顺序。主要分为两类:​​(底层:红黑树)setmapmultisetmultimap​​(C++11引入,底层:哈希表)

2025-03-27 00:30:00 1064

原创 C++:iostream迭代器

读取失败(如类型不匹配)或遇到EOF时,迭代器变为尾后状态。:将输入/输出流抽象为元素序列,适配标准库算法。:输入迭代器不支持重复遍历,读取后元素不可回溯。:每个元素后均附加分隔符,包括最后一个元素。:生成尾后迭代器,用于标识流结束。:读取下一个元素,自动跳过空白符。:无实际作用,仅为保持接口一致性。:确保输出流有效,避免写入失败。:利用迭代器范围初始化容器。:每次写入后自动附加(如。:从输入流读取类型为。:向输出流写入类型为。:结合算法直接写入流。:显式处理每个元素。、文件流等输出目标。

2025-03-26 02:30:00 285

原创 C++:向Lambda传递参数与捕获

介绍向Lambda传递参数与捕获列表相关内容

2025-03-25 21:32:25 643

原创 C++:泛型算法

泛型算法(Generic Algorithm)​是 C++ Standard Template Library (STL) 的核心组成部分,其本质是与容器类型无关的通用操作逻辑。通过模板和迭代器机制,泛型算法能够对任意满足迭代器接口的容器(如vectorlistmap)进行操作,实现代码复用和高度灵活性。核心特征​容器无关性:不依赖具体容器类型,只要求容器提供迭代器。​类型安全:通过模板参数推导类型,编译期检查错误。​高性能:针对不同容器底层数据结构优化(如vector的连续内存访问、list。

2025-03-25 09:09:55 1243

原创 C++ :顺序容器

迭代器是STL容器元素的访问工具,类似于指针,但提供统一的抽象接口。遍历容器元素(如++操作)访问元素内容(如解引用)判断元素位置关系(如==比较)所有标准容器都提供迭代器,但不同容器的迭代器能力不同(如随机访问vs单向访问)1. 默认构造函数// 空vector// 空list// 空map特点:创建空容器适用场景:后续动态添加元素2. 列表初始化(C++11起)// 直接初始化元素// 包含3个int// 包含2个string注意使用大括号{}初始化可能触发构造函数。

2025-03-25 00:00:00 1167 1

原创 C++:IO库

>protected:// 自定义输出处理return c;// 使用自定义缓冲区标准库通过删除拷贝控制成员// ...// 拷贝构造删除// 赋值操作删除// 同样禁用拷贝构造和赋值#include <string> // 用于字符串操作#include <limits> // 用于numeric_limits2. 文件流类​ofstream:输出文件流,用于写入文件。​ifstream:输入文件流,用于读取文件。​fstream:多功能文件流,支持读写操作。

2025-03-24 00:00:00 1224

原创 C++:类(通识版)

在C++中定义抽象数据类型(Abstract Data Type, ADT)​的核心是通过类(class)将数据和对数据的操作封装起来,并对外仅暴露接口(API),隐藏实现细节。确定ADT的功能需求以栈(Stack)​压栈(push):将元素添加到栈顶。弹栈(pop):移除栈顶元素。获取栈顶元素(top判断栈是否为空(isEmpty获取栈大小(size​设计清晰的公共接口:覆盖所有用户操作需求。​隐藏实现细节:数据成员和辅助函数设为private。​管理资源。

2025-03-23 03:30:00 947

原创 C++:函数(通识版)

局部对象是指在函数内部或代码块(如{}包围的语句块)内定义的对象。特点​作用域(Scope)​:仅在定义它的函数或代码块内可见。​生命周期(Lifetime)​:从定义处开始,到离开作用域时自动销毁。函数声明(也称函数原型,Function Prototype)的主要目的是向编译器告知函数的存在,允许在函数定义之前调用它。核心作用​类型检查:确保调用时参数类型和返回值类型正确。​分离编译:支持多文件编程,声明通常放在头文件(.h)中。​解决依赖。

2025-03-23 00:45:00 1059

原创 C++ :try 语句块和异常处理

通过继承。

2025-03-21 00:00:00 835

原创 C++: vector

std::vector是 C++ 标准库中动态数组的实现,支持自动扩容、随机访问和高效的元素操作。

2025-03-20 00:00:00 1304 1

原创 C++: string

是 C++ 标准库提供的用于处理字符串的类,封装了字符串的存储和操作,支持动态内存管理、丰富的成员函数和运算符重载。自动管理内存,无需手动释放。

2025-03-19 02:15:00 1658

原创 C++: 复合类型

​定义:通过基本类型组合构建的新类型​内存视角:管理多个数据单元的集合(连续或链式存储)​核心作用组织复杂数据结构实现内存动态管理支持抽象数据类型(ADT)​目的:组合不同类型的数据成员。// 20字节int age;// 4字节// 4字节​内存对齐:编译器可能插入填充字节优化访问速度。Student大小可能是字节(无填充),但实际可能因对齐规则更大。char c;// 1字节int i;// 4字节(对齐到4的倍数地址)double d;

2025-03-19 00:30:00 909

原创 C++ :顶层const与底层const的区别

顶层const与底层const的区别constconstconstconst。

2025-03-19 00:15:00 221

原创 C++ :变量

C++ :变量

2025-03-18 03:00:00 763

原创 C++:基本内置类型

特征整型浮点型字符型布尔型内存占用2-8字节4-16字节1-4字节1字节运算速度最快较慢快快典型用途计数/索引科学计算文本逻辑判断精度损失风险无有无无字面值后缀u(U), l(L)等f(F), l(L)等无无。

2025-03-18 02:30:00 1593

原创 软件工程:数据字典

数据字典

2025-03-17 14:08:17 899

原创 Python: 浅拷贝和深拷贝

Python: 浅拷贝和深拷贝

2025-03-16 05:00:00 1119

原创 python:元组不仅仅是不可变列表

元组不仅仅是不可变列表

2025-03-16 00:30:00 891

原创 python:数据类构建器

在 Python 中,​数据类(Data Classes)​ 用于快速创建主要目的是存储数据的类,自动生成 __init__, __repr__, __eq__ 等方法。

2025-03-16 00:00:00 2645

原创 python : 海象运算符 :=

海象运算符 :=

2025-03-15 00:45:00 321

原创 Python:列表推导式和生成器表达式

列表推导式和生成器表达式

2025-03-15 00:15:00 677

原创 Python:容器API

Python中的容器(Container)是能包含其他对象的对象,分为两类:所有容器类型支持以下操作:​3. 抽象基类(ABCs)与协议Python通过模块的抽象基类定义容器接口,确保自定义容器符合预期行为。​4. 内置容器的性能与选择不同容器类型的操作时间复杂度不同,需根据场景选择:实现处理对象:

2025-03-14 00:30:00 277

原创 Python :数据模型

Python :数据模型

2025-03-14 00:00:00 2122 2

原创 python:一个有趣问题(留个悬念)

【代码】python:一个有趣问题(留个悬念)

2025-03-13 21:04:24 102

原创 Python:类与对象

​本质:创建对象的蓝图/模板,包含数据(属性)和行为(方法)的定义​关键特征支持继承、封装、多态可以创建多个实例(对象)​示例"""交通工具类"""category = "Transportation" # 类属性self.name = name # 实例属性self.speed = speed # 实例属性"""实例方法"""return f"{self.name} 最高时速 {self.speed}km/h"深入理解类结构1. 类与实例命名空间。

2025-03-13 01:00:00 753

原创 Python:函数式编程

函数式编程(Functional Programming, FP)是一种编程范式,强调通过纯函数、不可变数据和声明式风格来构建程序。Python 虽然不是纯函数式语言,但提供了丰富的函数式编程工具。

2025-03-13 00:00:00 847

原创 Python:递归

是一种通过 ​来解决问题的编程技巧。它将一个大问题分解为更小的、结构相似的子问题,直到达到可以直接解决的简单情况

2025-03-12 09:17:44 220

原创 Python:Matplotlib

Matplotlib相关的核心内容

2025-03-12 02:00:00 742

原创 Python :Pandas

Pandas的核心内容

2025-03-11 21:00:13 393

空空如也

空空如也

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

TA关注的人

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