
C++
安东time
比技术更重要的是人品
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 线程池的思想
线程池原理总结首先你要有一个队列来保存你的任务,任务就是待执行的函数,这个队列叫做同步队列,主要就是队列的操作都带上锁实现线程安全。然后需要创建多个线程(可以保存在vector中,这就是线程池),每个线程创建的时候船用执行函数run(),在执行函数run()中,我们不断取出同步队列中的任务来执行,直到完成所有任务,并且主动销毁线程。...原创 2021-06-21 22:16:31 · 147 阅读 · 2 评论 -
C++ 函数指针
文章目录基础介绍代码普通函数指针函数指针作为参数传递给函数函数指针数组指向类成员函数的函数指针基础介绍1、对于普通函数名直接就代表着函数地址2、对于类成员函数需要在函数前加上类修饰符函数指针:函数指针也是一种类型,可以声明,赋值。类内的静态函数和普通函数可以用同样的方式使用,就是直接利用函数指针执行,而类的普通成员函数的使用需要加上类的实例在前面,解引用的符号也不一样需要加上*代码普通函数指针//**********************普通函数指针*******************原创 2021-04-30 17:29:03 · 133 阅读 · 1 评论 -
C++ 线程同步 异步 阻塞 非阻塞概念介绍 及 C++ 实践
文章目录基础概念介绍c++ 11 中多线程以及异步处理基础概念介绍基础概念介绍参考博文:https://www.cnblogs.com/mhq-martin/p/9035640.html我们经常看到线程同步 进程同步 有时候可能还会听到线程异步之类的说法,这些概念容易让人混淆,所以首先我们把这些概念拆开来一个一个看,然后他们组合起来应该就容易理解了同步就是按照顺序一件一件的做。专业一点就是如果调用了一个函数,就需要等这个函数运行结束,才能执行后面的代码。异步就是很多事情一起做,顺序不能确定。专原创 2021-04-28 11:14:50 · 6299 阅读 · 0 评论 -
2021 大厂实习笔试
阿里巴巴将数字用字符替代,并且完成数字的加减操作再以字符输出#include<iostream>;#include <string>#include<algorithm>using namespace::std;int charTurnToNum(char c){ switch (c) { case ')': { return 0; } case '!': { return 1; } case '@': { return原创 2021-04-07 12:45:41 · 193 阅读 · 0 评论 -
C++ STL:unordered_map::begin()函数不一定返回第一个元素
原创 2021-03-14 18:27:31 · 1012 阅读 · 0 评论 -
C++ :红黑树
https://www.cnblogs.com/skywang12345/p/3624291.html#a1转载 2021-03-11 16:16:05 · 82 阅读 · 0 评论 -
C++编程思想:文件 字符串 输入输出
文章目录标准文件读取和写入标准文件读取和写入#include <iostream>#include <fstream>#include <string>#include<assert.h>using std::ifstream;using std::ofstream;using std::cout;using std::endl;using std::string;// ******************** 利用getLine 读取原创 2021-03-10 15:49:23 · 186 阅读 · 0 评论 -
C++编程思想:C++string
文章目录C++字符串的初始化C++字符串的追加 插入 连接 空间分配 替换C++string 查找和替换C++字符串的初始化int main(){ // string s1('a'); //不支持单一char字符的转换 // string s(1); //不支持单一数字的转换 string s1(1, 'a'); cout << "s1 : " << s1<<endl; string s2(5, 'b'); cout << "s2 : "原创 2021-03-09 11:28:40 · 114 阅读 · 2 评论 -
C++编程思想:模板
文章目录模板的特性1:需要遵守约定模板类型的模板参数函数成员模板和类成员模板模板特化以及模板重载模板的特性1:需要遵守约定模板将类型以一个标识符替代,想要使用模板就需要遵守模板对这个标识符的要求,比如对标识符有什么成员变量以及成员函数。#include <iostream>#include <vector>using namespace::std;//*****************这是一个模板类的实现,展示模板的特性之一:约定性*******************原创 2021-03-08 21:51:13 · 164 阅读 · 0 评论 -
C++编程思想:继承与虚函数以及多态
文章目录简介实现虚函数多态的技术原理对象切边析构函数和构造函数中的虚函数使用继承的类的析构函数应该使用虚函数修饰符简介继承与虚函数与多态是浑然一体的三个概念,父类中虚函数可以表现出多态特性,具体是将子类的地址传递给指向父类的指针(类型向上转换),通过这样的指针调用虚函数依然会调用到子类中的这个虚函数的实现,这就是多态。实现虚函数多态的技术原理C++编译器在每个包含虚函数类的对象中隐匿生成了一个指针vptr,这个指针指向一张虚函数表,虚函数表中记录着每个虚函数距离当前对象起始地址的偏移量。当调用虚函数原创 2021-03-08 10:44:38 · 216 阅读 · 0 评论 -
C++编程思想:父类函数隐藏
当父类中有多个重载的函数,如果子类以任意一种方式重写了父类的函数,那么所有父类的此名字函数都会被隐藏#include<iostream>#include<string>using namespace std;class Base {public: int f() const { cout << "Base::f() \n"; return 1; } int f(string c) const { cout << "Base::原创 2021-03-06 15:06:43 · 395 阅读 · 0 评论 -
C++编程思想:指针,引用,拷贝构造函数,赋值运算符
#include<iostream>int i = 47;int* p = &i;void f(int** ip){ std::cout << "ip :" << ip <<std::endl; std::cout << "*ip :" << *ip <<std::endl; std::cout << "**ip :" << **ip <<std::endl;}原创 2021-03-04 21:57:49 · 306 阅读 · 1 评论 -
C++编译单元 内部链接 外部链接
文章目录编译单元 内部链接 外部链接简单解释代码解释外部链接内部链接C++ 中的内部链接 和外部链接 类型编译单元 内部链接 外部链接简单解释这是一个最简单最表面的解释,深入的解释应该要深入了解计算机程序运行的原理(在深入理解计算机操作系统中应该有)编译单元 :一个cpp文件就是一个编译单元。内部链接:在一个编译单元中的对象不可以被其他编译单元使用。外部链接:在一个编译单元中的对象可以被其他编译单元使用链接问题在代码中可以未解析的外部符号来报错,这就是编译单元声明了函数,但是却没有提供函数的实现原创 2021-02-28 22:49:16 · 331 阅读 · 0 评论 -
C++ 异常处理
文章目录异常处理基本流程标准异常自定义异常资源管理与清理异常处理基本流程C++ 异常处理基本流程由关键字 try throw catch 组成try{ //程序处理代码 if(errHappen) throw errObjN() //throw 要throw一个对象出来}catch(errObj1 &){ //异常1处理代码}catch(errObj& ){ //异常2处理代码}catch(...)//{ //任意异常都可以在此捕获}在try语句原创 2021-02-25 23:02:18 · 467 阅读 · 0 评论 -
大话数据结构 :排序
基础介绍快速排序是冒泡排序的升级,冒泡排序的算法性能较低时间性能O(n2),而快速排序平均可以达到o(nlogn)。冒泡排序就是两两比较,直到所有的位置都是有序排列的数据。而快速排序就是在两两比较的过程中增加了一个将比当前数据小的都放在一段,比当前数据大的都放在另一端的思想,提高了算法效率。代码#include <stdio.h> #include <string.h>#include <ctype.h> #include <stdlib原创 2021-01-28 22:16:20 · 176 阅读 · 0 评论 -
大话数据结构:散列表
基础介绍是一种存储结构,就是构建一个函数,以输入的关键字作为自变量,以地址作为因变量。具体实现有很多变种。代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100 /* 存储空间初始分配量 *原创 2021-01-25 23:06:44 · 112 阅读 · 0 评论 -
大话数据结构:多路查找
基础介绍是多节点的树,可以用在磁盘数据的查找上。代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100 /* 存储空间初始分配量 */#define m 3 /* B树的阶,暂设为3原创 2021-01-24 23:02:55 · 156 阅读 · 0 评论 -
大话数据结构:平衡二叉排序树
基础介绍平衡二叉排序树为了让二叉树的查找 删除 效率能够达到理论上的最好性能。主要手段就是旋转子树,有左旋和右旋,通过计算节点的平衡值确定如何旋转。代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZ原创 2021-01-24 15:27:55 · 152 阅读 · 0 评论 -
大话数据结构 : 二叉排序树
二叉排序树二叉排序树的好处在于插入 删除 查找的效率很高,比线性表和数组都好二叉树稍微难一点的敌方在于删除,在删除一个既有左子树也有右子树的节点时比较麻烦,策略就是将要删除的节点的左子树中向右查找找到最大的节点顶替原来的父节点,并且做好子树的重新连接代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define E原创 2021-01-24 14:06:11 · 119 阅读 · 0 评论 -
大话数据结构22:几种常见的静态查找算法
基础针对顺序表进行的查找顺序查找插值查找代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100 /* 存储空间初始分配量 */typedef int Status; /* Status原创 2021-01-23 21:44:13 · 212 阅读 · 0 评论 -
大话数据结构21 :关键路径
关键路径与dijisktra最短路径的目标相反,找出从起点到终点的一条最长路径。用在活动工期图中。具体计算:在拓扑排序中计算一个事件最早发生事件,然后再计算一个事件最晚发生事件,当一个事件最早发生时间等于最晚发生时间,表示这两个事件之间的活动就是关键活动,由关键活动组成一条活动连,就是关键路径。代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"原创 2021-01-23 20:05:57 · 150 阅读 · 0 评论 -
大话数据结构:拓扑排序
基础介绍对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。拓扑排序时的图结构:/* 第一步:找到所有入读为0的顶点,并将其压栈 第二步:从栈中pop出一个顶点,将其所连接的顶点的入度都减1 循环前两步,直到栈空,此时应该也没有了入度为q的顶点,如果有,说明图中出现了环*/#include "stdio.h" #原创 2021-01-21 22:14:33 · 181 阅读 · 0 评论 -
大话数据结构:最短路径算法
dijkstra最短路径算法迪杰斯特算法的核心是首先正向把离起点最近的点一个一个找出来,然后从终点开始逆向计算最短路径利用图数据结构实现dijkstra算法的伪代码如下{记录所有点到起点的距离并保存到数组D中,有直接连接的就是图中边的权值,没有直接连接的就是无穷大(起点到起点本身距离为0,后面的计算不考虑本身)}创建一个数组F记录顶点是否已经计算离顶点最近的距离创建一个保存路径的数组P循环顶点个数的次数 { {找到一个没有计算与顶点最近的距离的顶点k但是其在距离记录数组D中距离顶点D最原创 2021-01-21 13:38:59 · 240 阅读 · 0 评论 -
大话数据结构18:最小生成树算法
prim最小生成树算法对于几个图G{V,E};首先从V中任意选择一个顶点Vo 将其加入到顶点集合U中,在顶点集合V-U中计算所有到V中任意顶点假设是Vo最近的顶点Voo,将其加入到U中,并且记录边E{Vo,Voo},一直重复以上操作直到顶点集合V等于集合U结束。代码实现#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#d原创 2021-01-20 21:11:52 · 128 阅读 · 0 评论 -
大话数据结构 17:图的深度优先遍历和广度优先遍历
深度优先遍历主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底…,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。广度优先遍历·广度优先遍历图是以顶点v为起始点,由近至远,依次访问和v有路径相通而且路径长度为1,2,……的顶点。为了使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问,需设置队列存储访问的顶点。代码实现邻接矩阵结构的遍历//邻接表的深度优先原创 2021-01-17 17:34:40 · 189 阅读 · 0 评论 -
大话数据结构16:图
基础介绍图的数据结构图主要由顶点和边组成无向边用()有向边用<>入度:一顶点V为头的弧的数目为入度,出度:以其为尾的数目为出度。连通图连通图生成树图的定义与术语总结图的基本操作图的存储结构 邻接矩阵邻接矩阵图的代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#de原创 2021-01-17 14:41:49 · 123 阅读 · 0 评论 -
大话数据结构15 : 线索二叉树
基础介绍线索二叉树就是当用链表组成的二叉树其在叶节点或者分支中有空指针时,将空指针指向自己的前驱后者后继记录后继记录前驱线索二叉树数据结构代码实现#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#defi原创 2021-01-17 10:28:44 · 152 阅读 · 2 评论 -
大话数据结构14 :二叉树 链表结构
#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100 /* 存储空间初始分配量 */typedef int Status;// 构造二叉树int i原创 2021-01-16 22:09:45 · 131 阅读 · 0 评论 -
大话数据结构13:二叉树 数组存储
基础介绍对于完全二叉树 父节点位置与子节点位置 i 与 2*i +1前序遍历打印函数在前中序遍历打印函数在中后序遍历打印函数在后#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100原创 2021-01-08 20:35:22 · 296 阅读 · 0 评论 -
大话数据结构12 串String
基础内容串的操作:串的比较代码#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 40 /* 存储空间初始分配量 */typedef int Sta原创 2021-01-07 20:38:24 · 161 阅读 · 0 评论 -
大话数据结构11:队列 链表结构
基础介绍用链表实现的队列代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;typedef int QElemTy原创 2021-01-04 21:27:28 · 122 阅读 · 0 评论 -
大话数据结构 队列10:数组循环队列
基础介绍队列 先进先出,出列在队头,进列在队尾数组可以做成循环队列。循环队列的一个重要问题:判断队列是空是满?空队列的判断比较简单:尾游标等于头游标满队列的判断比较复杂:如果也是用尾游标等于头游标则出现与空队列相同的判断条件,此时可以额外增加判断标志位,还有第二种判断方法,就是判断尾游标和头游标值差一个元素的时候。代码#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #incl原创 2021-01-04 21:25:47 · 214 阅读 · 0 评论 -
C++ 大话数据结构 09: 中缀表达式 转后缀表达式 计算器
参考:https://blog.youkuaiyun.com/weixin_43670802/article/details/89279301原创 2021-01-03 21:42:50 · 168 阅读 · 0 评论 -
大话数据结构08:共享栈 C++
基础介绍共享栈就是一块内存分配给两个栈,两个栈从各自端点向中间生长,就是计算机基础中内存栈的实现吧代码#include "stdio.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int *///两原创 2021-01-01 21:36:51 · 182 阅读 · 0 评论 -
大话数据结构07 :链表栈
基础介绍用链表结构作为栈的支撑结构代码#include "stdio.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int *///链栈结构typedef struct StackNode{原创 2021-01-01 20:43:13 · 120 阅读 · 1 评论 -
大话数据结构 06:栈 顺序存储结构
基础内容栈的基础操作:顺序栈代码#include "stdio.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int *///顺序栈结构typedef struct{ SElemType原创 2020-12-30 20:05:16 · 102 阅读 · 0 评论 -
大话数据结构05: 双向链表
基础要义双向链表的节点结构双向链表的插入要先把插入位置的后继节点重新绑定,否则容易丢失后继节点双向链表的删除同样是先绑定后继节点C++代码#include "stdio.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;/* Status是函数的类型,其值是函数结果状态代码,如OK等 */t原创 2020-12-25 21:30:21 · 182 阅读 · 0 评论 -
大话数据结构04:循环链表
1、头指针法#include "stdio.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;/* Status是函数的类型,其值是函数结果状态代码,如OK等 */typedef int ElemType;/* ElemType类型根据实际情况而定,这里假设为int */Status visit(Ele原创 2020-12-24 22:05:37 · 157 阅读 · 0 评论 -
大话数据结构03:静态链表
假设没有指针,如何利用数组来模拟链表结构。#include "stdio.h" #define OK 1#define ERROR 1#define TRUE 1#define FALSE 0#define MASIZE 1000 //存储空间最大分配量typedef int status;typedef char ElemType;status visit(ElemType c){ printf("%c", c); return OK;}// 线性表的存储结构原创 2020-12-24 19:56:41 · 168 阅读 · 2 评论 -
大话数据结构 01 :顺序线性表
1、完整代码#include "stdio.h"#define OK 1#define ERROR 0 #define TRUE 1#define FALSE 0#define MAXSIZE 20 //存储空间分配量 typedef int Status;typedef int ElemType;//打印出所访问的字符Status visit(ElemType c){ printf("%d ", c); return OK;}typedef struct{ E原创 2020-12-22 21:45:57 · 83 阅读 · 0 评论