文章列表

42k 39 分钟

# 一、理论基础 要了解二叉树的几种类型 / 定义; 要熟悉几种遍历方式: 深度优先遍历 前序遍历(递归法,迭代法) 中序遍历(递归法,迭代法) 后序遍历(递归法,迭代法) 广度优先遍历 层次遍历(迭代法) 见 [[二叉树_0.png]]、[[二叉树_1.png]] # 1.1 递归法 # i、递归法前序遍历: 123456void preorderTraversal(TreeNode* cur, vector<int>& vec) { if(cur == nullptr) return;...
9.6k 9 分钟

# 一、理论基础 栈是先进后出,队列是先进先出,二者在 STL 中都是容器适配器,其底层实现可依靠 deque、list 等容器。 # 二、题目实践 # 1、232. 用栈实现队列 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849class MyQueue {public: MyQueue() { // } void push(int x) { _st1.push(x); }...
5.6k 5 分钟

# 一、理论基础 哈希法使用的场景通常为需要快速判断一个元素是否出现在集合里,哈希表牺牲空间换取时间。 哈希表通过哈希函数来进行 key 和 value 的映射。 映射时,可能会发生哈希碰撞。(尤其是元素数量大于容器数量的时候) 解决哈希碰撞有拉链法和线性探测法。 C++ 中常见的三种哈希结构:数组(array、vector)、集合(set)、映射(map)。 集合 底层实现 是否有序 数值是否可以重复 能否更改数值 查询效率 增删效率 std::set 红黑树 有序 否 否 O(log n) O(log n) std::multiset 红黑树 有序 是 否 O(log...
9.7k 9 分钟

# 一、理论基础 也没什么特别的。离散存储、不支持随机访问。 链表节点的定义: 1234567template <class T>struct _listNode { void* m_prev; void* m_next; T m_data; _listNode(T x) : m_data(x), m_next(nullptr), m_prev(nullptr) {}}; # 二、题目实践 # 1、203....
7.8k 7 分钟

# 一、理论基础 几乎无。只要记住数组是相同类型、连续存储、支持随机访问的。 # 二、题目实践 # 1、704. 二分查找 #双指针 没啥难度的,基本一次过,以下是个人版本: 12345678910111213141516class Solution {public: int search(vector<int>& nums, int target) { int left = 0, right = nums.size() - 1; while(left <= right) { int...
3.8k 3 分钟

The class template std::packaged_task wraps any callable target (function, lambda expression, bind expression, or another function object) so that it can be invoked asynchronously. Its return value or exception thrown is stored in a shared state which can be accessed through std::future...
2.7k 2 分钟

std::future 是 C++ 标准库中的一个类模板,用于表示一个异步操作的结果,可用于从一个线程获取另一个线程计算的结果。 std::future 还可以与 std::promise 、 std::async 、 std::packaged_task 结合使用,用于实现更复杂的异步任务管理。 简单来说, std::future 提供了一种获取异步操作的结果的机制: 一个异步操作(通过 std::async 、 std::packaged_task 或 std::promise 创建)能够向其创建者提供一个 std::future 对象,使用者可以利用 std::future...
5.1k 5 分钟

The class template std::promise provides a facility to store a value or an exception that is later acquired asynchronously via a std::future object created by the std::promise object. Note that the std::promise object is meant to be used only once. -- cppreference/promise # 1、概述 std::promise 是...
2.6k 2 分钟

std::async 是 C++11 标准库中引入的一个函数模板,用于启动一个异步任务,并返回一个 std::future 对象,用于获取异步任务的结果。 std::async 提供了一种简单的方式来并行化代码执行,而不需要显式地管理线程的生命周期。 # 1、作用 启动异步任务: std::async 启动一个新的任务,这个任务可以在新线程中并行执行。 管理任务结果: std::async 返回一个 std::future 对象,允许调用者在异步任务完成后获取结果。 简化并发编程:与直接使用 std::thread 相比, std::async...
2.3k 2 分钟

std::thread 是 C++11 标准库中的一个类,用于创建和管理线程。它提供了一种并发编程的机制,使得一个程序可以同时执行多个任务,提高程序的执行效率和响应能力。 # 1、构造函数及其参数 std::thread 的构造函数有多种形式,常见的使用方法如下: 普通函数: 12void function_name(int arg1, double arg2);std::thread t1(function_name, 10, 3.14); 这里 function_name...