- 博客(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++:泛型算法
泛型算法(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++: 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++:基本内置类型
特征整型浮点型字符型布尔型内存占用2-8字节4-16字节1-4字节1字节运算速度最快较慢快快典型用途计数/索引科学计算文本逻辑判断精度损失风险无有无无字面值后缀u(U), l(L)等f(F), l(L)等无无。
2025-03-18 02:30:00
1593
原创 python:数据类构建器
在 Python 中,数据类(Data Classes) 用于快速创建主要目的是存储数据的类,自动生成 __init__, __repr__, __eq__ 等方法。
2025-03-16 00:00:00
2645
原创 Python:容器API
Python中的容器(Container)是能包含其他对象的对象,分为两类:所有容器类型支持以下操作:3. 抽象基类(ABCs)与协议Python通过模块的抽象基类定义容器接口,确保自定义容器符合预期行为。4. 内置容器的性能与选择不同容器类型的操作时间复杂度不同,需根据场景选择:实现处理对象:
2025-03-14 00:30:00
277
原创 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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人