2022年4月8日
摘要:
什么是迭代器? 迭代器是一个很通用的概念,并不是一个特定的类型。它实际上是一组对类型的要求([1])。它的最基本要求就是从一个端点出发,下一步、下一步地到达另一个端点。按照一般的中文习惯,也许“遍历”是比“迭代”更好的用词。我们可以遍历一个字符串的字符,遍历一个文件的内容,遍历目录里的所有文件,等等
阅读全文
posted @ 2022-04-08 23:49
独立树
阅读(390)
推荐(0)
摘要:
最短路径 Floyed算法 解决的问题 求解任意两点之间的最短路径 可以处理带有负权边的图, 但不能处理带有“负环”的图 思想 对于要求解的两个点,我们给定任意一个点作为中间点,经过中间点的路径有没有可能比直接到达更短? 动态规划的思想 时间复杂度 一个小例子 #include <cstdio> #
阅读全文
posted @ 2022-04-08 23:07
独立树
阅读(40)
推荐(0)
摘要:
并查集 并查集是一种树形数据结构,用于处理一些不相交集合的合并及查询问题。 常见的用途有求连通子图、求最小生成树的Kruskal算法和求最近公共祖先(LCA)等。 创建并查集只需要三个步骤。 算法步骤 初始化。把每个点所在集合初始化为其自身。 查找。查找两个元素所在的集合,即找祖宗。 合并。如果两个
阅读全文
posted @ 2022-04-08 11:11
独立树
阅读(81)
推荐(0)
2022年4月7日
摘要:
函数对象及其特化 在讲容器之前,我们需要首先来讨论一下两个重要的函数对象,less 和 hash。 我们先看一下 less,小于关系。在标准库里,通用的 less 大致是这样定义的: template <class T> struct less : binary_function<T, T, boo
阅读全文
posted @ 2022-04-07 22:42
独立树
阅读(60)
推荐(0)
摘要:
string string 一般并不被认为是一个 C++ 的容器。但鉴于其和容器有很多共同点,我们先拿 string 类来开说。 string 是模板 basic_string 对于 char 类型的特化,可以认为是一个只存放字符 char 类型数据的容器。“真正”的容器类与 string 的最大不
阅读全文
posted @ 2022-04-07 22:26
独立树
阅读(80)
推荐(0)
2022年4月6日
摘要:
移动语义是 C11 里引入的一个重要概念;理解这个概念,是理解很多现代 C 里的优化的基础。 值分左右 我们常常会说,C++ 里有左值和右值。这话不完全对。标准里的定义实际更复杂,规定了下面这些值类别(value categories): 我们先理解一下这些名词的字面含义: 一个 lvalue 是通
阅读全文
posted @ 2022-04-06 20:59
独立树
阅读(444)
推荐(1)
摘要:
第一步:针对单独类型的模板 为了完成智能指针首先第一步的想法。 class shape_wrapper { public: explicit shape_wrapper( shape* ptr = nullptr) : ptr_(ptr) {} ~shape_wrapper() { delete p
阅读全文
posted @ 2022-04-06 19:58
独立树
阅读(426)
推荐(0)
2022年4月2日
摘要:
基本概念 堆,英文是 heap,在内存管理的语境下,指的是动态分配内存的区域。这个堆跟数据结构里的堆不是一回事。这里的内存,被分配之后需要手工释放,否则,就会造成内存泄漏。 C++ 标准里一个相关概念是自由存储区,英文是 free store,特指使用 new 和 delete 来分配和释放内存的区
阅读全文
posted @ 2022-04-02 23:19
独立树
阅读(209)
推荐(0)
2022年3月27日
摘要:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <stdbool.h> 4 5 typedef struct{ 6 int pc; //程序运行到了那一步 7 int line; // 8 }Frame; 9 10 Frame stk[12
阅读全文
posted @ 2022-03-27 11:33
独立树
阅读(39)
推荐(0)