摘要: [Algo] 归并分治 1. 经典归并排序 // 1. 经典归并排序 void merge(vector<int> &v, int left, int mid, int right) { vector<int> tmp(v); int i = left, j = mid + 1, k = left; 阅读全文
posted @ 2024-12-06 20:21 yaoguyuan 阅读(2) 评论(0) 推荐(0) 编辑
摘要: [Algo] 二叉树遍历 二叉树节点类型定义: struct BinaryTreeNode { int val; BinaryTreeNode *left; BinaryTreeNode *right; BinaryTreeNode(int x) : val(x), left(nullptr), r 阅读全文
posted @ 2024-12-06 10:50 yaoguyuan 阅读(9) 评论(0) 推荐(0) 编辑
摘要: [Algo] 栈和队列 1. 栈实现队列 // 1. 栈实现队列 class MyQueue { private: stack<int> in; stack<int> out; public: void enQueue(int val) { in.push(val); inToOut(); } vo 阅读全文
posted @ 2024-12-05 17:54 yaoguyuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: [Algo] 链表操作 链表节点类型定义 struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; 1. 反转链表 // 1. 反转链表 ListNode *reverseList 阅读全文
posted @ 2024-12-03 17:05 yaoguyuan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: [Algo] 二分查找 注:Algo系列基于左神算法教程,提供C++实现。 1. 经典算法 // 1. 经典二分查找:给定有序序列,查找val,存在返回(任一)索引,否则返回-1 int binarySearch(const vector<int> &v, int val) { if (v.size 阅读全文
posted @ 2024-12-02 17:08 yaoguyuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: [Lang] 类模板 完全特化与偏特化: 特性 完全特化(Full Specialization) 偏特化(Partial Specialization) 定义 为特定类型提供完全的实现 为类型参数的部分组合提供定制的实现 模板参数 必须指定所有的模板参数 可以只指定一个或部分模板参数 示例 tem 阅读全文
posted @ 2024-12-01 12:28 yaoguyuan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: [Lang] 函数模板 1. 自动类型推导和显示指定类型 自动类型推导不能进行隐式类型转换。 显式指定类型可以进行隐式类型转换。但前提是函数模板的参数必须按值传递,因为按引用传递不支持隐式类型转换。 #include<iostream> using namespace std; template < 阅读全文
posted @ 2024-08-18 16:02 yaoguyuan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: [Lang] 虚函数 1. 虚函数与纯虚函数 多态分为静态多态和动态多态,静态多态指函数重载和运算符重载,而动态多态指虚函数。 动态多态的条件: 子类重写父类的虚函数 父类指针或引用指向子类对象 虚函数的底层原理: 对于每个包含虚函数的类,编译器都会创建一个虚函数表(vftable),每一个虚函数表 阅读全文
posted @ 2024-08-16 00:26 yaoguyuan 阅读(12) 评论(0) 推荐(0) 编辑
摘要: [Lang] 运算符重载 #include<iostream> using namespace std; class MyInt { friend ostream &operator<<(ostream &os, const MyInt &myint); friend istream &operat 阅读全文
posted @ 2024-08-15 01:03 yaoguyuan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: [Lang] 智能指针 智能指针能够有效简化内存管理,避免内存泄漏和悬挂指针等问题。 1. std::unique_ptr 独占所有权:一个 std::unique_ptr 对象拥有其管理的对象的唯一所有权。 不允许复制:不能进行复制操作,尝试复制会导致编译错误。 允许移动:可以将 std::uni 阅读全文
posted @ 2024-08-13 22:56 yaoguyuan 阅读(3) 评论(0) 推荐(0) 编辑