上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 33 下一页
摘要: 单调队列 经典用法:维持滑动窗口滑动过程中的最大值或最小值。最大值时,单调队列从头到尾降序 维持求解答案的可能性 单调队列里所有对象按照规定好的单调性组织 当某个对象从队尾进入单调队列时,会从队头或者队尾依次淘汰单调队列里,对后续求解答案没有帮助的对象 每个对象一旦弹出,可以结算其参与的答案,随后这 阅读全文
posted @ 2024-09-05 20:17 _Sylvan 阅读(26) 评论(0) 推荐(0)
摘要: 单调栈 经典用法:在数组中当前元素的两侧找第一个比当前元素更大(更小)的数在哪 维持求解答案的可能性 单调栈里的所有对象按照规定好的单调性来组织 当某个对象进入单调栈时,会从栈顶开始依次淘汰单调栈里对后续求解答案没有帮助的对象 每个对象从栈顶弹出时结算当前对象参与的答案,随后这个对象不再参与后续求解 阅读全文
posted @ 2024-08-31 22:32 _Sylvan 阅读(27) 评论(0) 推荐(0)
摘要: 数据结构定义 struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, Lis 阅读全文
posted @ 2024-08-28 17:09 _Sylvan 阅读(19) 评论(0) 推荐(0)
摘要: string std::string 是 C++ 标准库中用于表示和操作字符串的类,实质上是 std::basic_string<char> 的一个特化。它封装了字符数组,提供了丰富的字符串操作接口。 属于序列容器的特殊类型,支持迭代器、索引访问。 主要用于存储和管理可变长度的字符序列。 底层原理 阅读全文
posted @ 2024-08-28 16:57 _Sylvan 阅读(40) 评论(0) 推荐(0)
摘要: priority_queue std::priority_queue 是 STL 提供的容器适配器,实现了一个最大堆(默认)或最小堆的数据结构,用于快速访问“优先级最高”的元素。 默认行为是:堆顶元素最大(max heap)。 底层原理 底层基于 vector + make_heap/push_he 阅读全文
posted @ 2024-08-20 23:31 _Sylvan 阅读(124) 评论(0) 推荐(0)
摘要: queue std::queue 是 STL 中的容器适配器(Container Adapter),用来实现先进先出(FIFO)的队列行为。 它是对一个底层序列容器的封装,默认用 deque 实现,并只暴露有限的接口。 底层原理 template< class T, class Container 阅读全文
posted @ 2024-08-20 22:48 _Sylvan 阅读(53) 评论(0) 推荐(0)
摘要: stack std::stack 是一个 容器适配器(container adapter),用于模拟 后进先出(LIFO) 的栈结构。 它 封装了一个底层容器(默认是 deque),并 仅暴露部分接口(如 push, pop, top),从而屏蔽掉底层容器的其余功能。 常见接口 #include < 阅读全文
posted @ 2024-08-20 22:42 _Sylvan 阅读(52) 评论(0) 推荐(0)
摘要: 容器适配器 容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。 stack<T>:是一个封装了 deque<T> 容器的适配器类模板,默认实现的是一个后入先出(Last-In-First-Ou 阅读全文
posted @ 2024-08-20 19:31 _Sylvan 阅读(21) 评论(0) 推荐(0)
摘要: forward_list std::forward_list 是 C++11 引入的单向链表容器,相比 std::list(双向链表)更加轻量,仅维护一个方向的链接指针,适用于低内存开销、简单插删的场景。 底层结构与原理 底层是单向链表(singly linked list),每个节点结构类似: s 阅读全文
posted @ 2024-08-20 19:25 _Sylvan 阅读(59) 评论(0) 推荐(0)
摘要: list std::list 是 STL 中的一个容器,底层实现为 双向链表,每个元素是一个节点,拥有前后指针,可以快速在任意位置插入或删除元素。 底层原理 每个节点: struct Node { T data; Node* prev; Node* next; }; 容器维护两个指针: head 指 阅读全文
posted @ 2024-08-20 18:53 _Sylvan 阅读(60) 评论(0) 推荐(0)
摘要: 指针和引用 指针 #include <iostream> using namespace std; int main() { // 实际变量的声明 int var = 20; // 指针变量的声明 int *addr; // 在指针变量中存储 var 的地址 addr = &var; cout << 阅读全文
posted @ 2024-08-20 15:15 _Sylvan 阅读(23) 评论(0) 推荐(0)
摘要: 容器 容器是用来存储数据的序列,它们提供了不同的存储方式和访问模式。 STL 中的容器可以分为三类: 1、序列容器:存储元素的序列,允许双向遍历。 vector:动态数组,支持快速随机访问。 deque:双端队列,支持快速插入和删除。 list:链表,支持快速插入和删除,但不支持随机访问。 2、关联 阅读全文
posted @ 2024-08-20 15:14 _Sylvan 阅读(28) 评论(0) 推荐(0)
摘要: deque deque 是一个非常强大的容器,兼顾了随机访问和双端插删,适合做队列、缓存、滑动窗口等场景。底层结构比 vector 复杂,但性能更稳健,是 STL 容器中非常实用的一种。 基本特点 特性项 描述 全称 Double Ended Queue(双端队列) 隶属 STL 顺序容器之一 存储 阅读全文
posted @ 2024-08-20 15:09 _Sylvan 阅读(58) 评论(0) 推荐(0)
摘要: vector std::vector 是 C++ 标准库中提供的动态数组容器,支持快速随机访问,能够自动管理内存,使用灵活,是实际开发中最常用的 STL 容器之一。 底层原理 内存结构 data --> [x][x][x][ ][ ][ ][ ]... ↑ ↑ ↑ begin() end() cap 阅读全文
posted @ 2024-08-20 14:15 _Sylvan 阅读(108) 评论(0) 推荐(0)
摘要: array std::array 是 C++11 引入的固定大小数组封装类,本质就是对原生数组 T[N] 的安全封装,提供了 STL 容器的接口支持(如迭代器、begin()、size()、fill()等)。 适合在栈上存储、大小已知的固定数组,功能强于 C 风格数组,效率接近裸数组。 基本语法与使 阅读全文
posted @ 2024-08-20 09:05 _Sylvan 阅读(111) 评论(0) 推荐(0)
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 33 下一页