上一页 1 2 3 4 5 6 ··· 33 下一页
摘要: RB-Tree 前置知识 二叉搜索树 二叉树 二叉树(binary tree) 是一种每个节点最多有两个子节点的数据结构,分别称为左子节点和右子节点。可以用递归方式定义:一个非空二叉树由一个根节点和左右子树组成,左右子树本身也是二叉树,且可以为空。 二叉树用途广泛,例如表达式树、哈夫曼编码树等都属于 阅读全文
posted @ 2025-08-10 12:49 _Sylvan 阅读(12) 评论(0) 推荐(0)
摘要: heap Heap 概述 Heap 并不属于 STL 的容器组件,它更像是一个“幕后英雄”,是 priority_queue(优先队列)的底层支撑。 什么是 Priority Queue? 优先队列允许用户以任意顺序插入元素,但取出元素时总是优先级最高的先出(通常数值最大)。 这非常符合 Binar 阅读全文
posted @ 2025-08-10 12:41 _Sylvan 阅读(24) 评论(0) 推荐(0)
摘要: std_list 的排序算法源码 源码 void sort() { // 如果链表为空,或者只有一个元素,则不需要排序,直接返回 if (node->next == node || link_type(node->next)->next == node) return; list carry; // 阅读全文
posted @ 2025-07-22 18:01 _Sylvan 阅读(14) 评论(0) 推荐(0)
摘要: 为什么堆内存这么慢? 本文基于 YouTube 频道 Core Dumped 的视频《WHY IS THE HEAP SO SLOW?》讲解整理 程序的内存布局概览 程序运行时,内存大致分为以下几个区域: 地址由高到低 ↓ + + ← 高地址 | 栈(Stack) | ← 用于函数调用、局部变量,从 阅读全文
posted @ 2025-07-22 18:01 _Sylvan 阅读(28) 评论(0) 推荐(0)
摘要: 为什么栈内存这么快? 本文基于 YouTube 频道 Core Dumped 视频《WHY IS THE STACK SO FAST?》整理 背景介绍 低级语言(如 C/C++)需要程序员明确指定变量大小。无法定义动态大小的数组,除非给定固定大小。 int arr[10]; // 大小固定,编译期已 阅读全文
posted @ 2025-07-22 18:00 _Sylvan 阅读(35) 评论(0) 推荐(0)
摘要: 变量大小的重要性 计算机中的数据是二进制序列 所有信息都以位(bit)形式存在,0或1组成序列 位数决定能表示的数值范围:位数越多,能表示的值越多 举例:2位二进制能表示4个值 二进制 十进制 00 0 01 1 10 2 11 3 每增加一位,表示范围翻倍(指数增长) 2位 → 4个值 8位 → 阅读全文
posted @ 2025-07-22 17:59 _Sylvan 阅读(16) 评论(0) 推荐(0)
摘要: 迭代器与 traits 编程技法 迭代器(Iterator)是 STL 的灵魂,它是一种通用指针机制,提供统一的方式来遍历容器中的元素。它允许算法与容器解耦。你可以将算法用于任何支持相同迭代器接口的容器上。 在 C++ STL 中,迭代器是一种对象,它重载了解引用 * 和自增 ++ 操作符,使得用户 阅读全文
posted @ 2025-07-20 19:35 _Sylvan 阅读(23) 评论(0) 推荐(0)
摘要: C++ 整数提升与移位陷阱 C++ 语言规定,小于或等于 int 的整数类型(如 char, uint8_t, short, bool,以及枚举类型等)在表达式中参与算术、移位或逻辑运算时,会被自动提升为 int 或 unsigned int(根据是否能表示原类型范围)。 引用 cppreferen 阅读全文
posted @ 2025-07-20 19:35 _Sylvan 阅读(75) 评论(0) 推荐(0)
摘要: C++ INT类重载实现及设计细节 《STL 源码剖析》1.9.4 节代码: #include <iostream> using namespace std; class INT { friend ostream& operator<<(ostream& os, const INT& i); pub 阅读全文
posted @ 2025-07-20 19:35 _Sylvan 阅读(15) 评论(0) 推荐(0)
摘要: 空间配置器 SGI STL 中的 空间配置器(allocator) 是 STL 容器使用内存的核心组件。 在《STL 源码剖析》中,侯捷将其拆解为: 一级配置器(__malloc_alloc_template):大对象,直接调用 malloc/free 二级配置器(__default_alloc_t 阅读全文
posted @ 2025-07-20 19:35 _Sylvan 阅读(24) 评论(0) 推荐(0)
摘要: multimap std::multimap 是 C++ STL 中的关联容器,它与 std::map 类似,但允许多个相同的键(key)存在。它存储的是键值对(key-value),并且 key 不唯一,但 按 key 排序,每个 key 可以关联多个不同的 value。 基本特性 键允许重复:s 阅读全文
posted @ 2025-07-20 19:34 _Sylvan 阅读(150) 评论(0) 推荐(0)
摘要: C++ 异常处理 C++ 的异常处理机制是通过 try、throw 和 catch 三个关键字来实现的,其设计目的是在程序发生错误时提供一种清晰的处理流程,而不是像 C 一样靠返回值或错误码。 try { // 可能抛出异常的代码 ... throw 异常对象; // 抛出异常 } catch (异 阅读全文
posted @ 2025-07-20 19:34 _Sylvan 阅读(30) 评论(0) 推荐(0)
摘要: multiset std::multiset 是 C++ STL 中的关联容器,与 std::set 类似,但它允许容器中存储重复的元素。multiset 元素是按特定顺序排列的,默认按照升序排序,底层通常使用红黑树来实现。 基本特性 元素可重复:与 std::set 不同,std::multise 阅读全文
posted @ 2025-07-20 19:33 _Sylvan 阅读(74) 评论(0) 推荐(0)
摘要: set set 是一个基于平衡二叉搜索树(如红黑树)的容器。它会自动对元素进行排序,且保证每个元素在集合中唯一。因为元素是有序的,所以查找、插入和删除的时间复杂度都是 O(log N)。 主要特性: 唯一性:set 中的元素不允许重复。 自动排序:元素会自动按照升序排序,如果需要自定义排序规则,可以 阅读全文
posted @ 2025-07-20 19:32 _Sylvan 阅读(39) 评论(0) 推荐(0)
摘要: map std::map 是一个关联容器,以 键值对(key-value) 形式存储数据,具有以下特性: 键是唯一的(key 不可重复) 元素按 key 自动排序(默认升序) 插入、删除、查找等操作的时间复杂度为 O(logN) 底层实现 std::map 底层基于红黑树(Red-Black Tre 阅读全文
posted @ 2025-07-20 19:32 _Sylvan 阅读(22) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 ··· 33 下一页