摘要: 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)
摘要: 序列容器 序列容器以线性序列的方式存储元素。它没有对元素进行排序,元素的顺序和存储它们的顺序相同。5 种标准的序列容器,每种容器都具有不同的特性: array<T,N> (数组容器) :长度固定的序列,有 N 个 T 类型的对象,不能增加或删除元素。 vector<T> (向量容器) :长度可变的序 阅读全文
posted @ 2024-08-20 09:04 _Sylvan 阅读(44) 评论(0) 推荐(0)
摘要: C++11 大括号初始化 C++11 可以将 {} 初始化器用于任何类型(可以用等号,也可以不用) 数组、集合初始化 在 C++11 中,集合(列表)的初始化已经成为 C++ 的一个基本功能,被称为“初始化列表”: // C++98支持,C++11支持 int a[] = {1, 2, 3}; // 阅读全文
posted @ 2024-08-20 08:24 _Sylvan 阅读(185) 评论(0) 推荐(0)