- 博客(102)
- 资源 (1)
- 收藏
- 关注
转载 【转载】C++中的前向声明
不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数。这里,我根本没有定义一个foo类,但是还是可以这样用,因为成员函数不占类对象的大小,所以c++编译器还是可以确定对象的大小(注:换句话说是否只要C++编译器能确定对象大小即可)。(1)由于所有对象类型的引用所占用的空间都是相同大的,所以c++编译器很好确认对象大小(引用的大小?(3)声明成员函数的形参或者是返回类型,也可以利用前向声明的性质。
2023-04-21 09:42:56 256 1
转载 VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别
VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别
2022-11-24 11:13:21 1927 1
原创 C语言读取文本文件到字符数组中,和源文件文本长度不一致
我想把本地文本文件通过C语言读取到unsigned char缓存数组中,供其他函数调用。我采用fopen函数只读文件,fseek函数找到文本结尾,ftell函数获取整个文本的长度,rewind函数回滚指针到文本开头,fread函数读取文件到缓存数组。但是缓存数组的内容却和文本文件的内容不一致。...............
2022-06-13 13:17:08 1109
原创 pyinstaller打包的exe太大而且运行太慢--简单的解决办法
pyinstaller 打包的exe总是太大而且打包好的exe运行起来速度超级慢。那是因为,你的默认环境里装了很多你不需要的包。在你当前的环境下,pyinstaller会把你安装的所有库都统一打包进去,造成打包好的exe很大,运行期来很慢。解决办法:要用纯净的python来打包即可避免加入不必要的包,那么如何快速地建立纯净的python环境呢?当然不用重装python,只需要通过pipenv建立虚拟环境即可。在虚拟环境下打包,最终的exe文件会非常小。建立一个python的虚拟环境python
2022-04-26 14:35:22 19680 9
原创 python判定固定时长固定频率的音频是否连续
我有一段时长大约为3.34 s 频率为1khz 的连续音频。该音频输入一个设备,经转换输出后,我想判断该音频是否还连续。好了,这就是我的需求,看起来比较棘手,但我们稍稍了解音频采样率,码流,音频格式,通道的相关概念后,我们就可以用强大的python很快解决此问题。关于音频的相关概念,请参考以下文章:音频(一):时域图、 频谱图 Spectrum、 功率谱https://blog.csdn.net/chumingqian/article/details/122947421正弦形函数https://
2022-04-25 13:25:22 3768
原创 插入排序-对半插入排序
#include<stdio.h>#include<stdlib.h>#include <string.h>#define MAXSIZE 100typedef int T;typedef struct list { int size; T elements[MAXSIZE];}List;void HalfInsertSort(List * lst, int length){ int i, j = 0, temp, low, high, mid;
2022-01-23 12:02:21 231
原创 基数排序(最低位优先法)-对于十进制基数则为10(局限性-对于具有固定位数的键值排序)
基数排序针对具有固定位数的序列十分有效。比如以下序列:T array[10] = {165,993,278,756,643,853,697,503,972,229};它的具体排序规则就是最低位优先法。你不需要具体了解该算法背后的理论,其实理论真的很晦涩。它的思想就是分配排序。基数排序是利用一种最低位优先法的单关键值排序方法,这里的"位"就是单关键字中的一个分量。比如以上未排序序列:T array[10] = {165,993,278,756,643,853,697,503,972,229};
2022-01-22 21:49:52 1160
原创 选择排序-堆排序-最小堆(优先权队列)
#include<stdio.h>#include<stdlib.h>#define MaxSize 101#define T inttypedef struct minheap { int Size; T Elements[MaxSize];}MinHeap;typedef MinHeap PQueue;//向下调整,针对位于上层的数值大的元素,按照完全二叉树下沉void AdjustDown(T heap[], int r, int n);//构建堆voi
2022-01-19 20:30:11 105
原创 合并排序-链表形式-递归算法
#include<stdio.h>#include<stdlib.h>typedef int T;typedef struct node { T element; struct node* Link;}Node;typedef struct list { Node* First;}List;Node* NewNode(T x) { Node* n = (Node*)malloc(sizeof(Node)); n->element = x; n-...
2022-01-18 22:18:37 280 3
原创 合并排序-顺序表-两路合并排序迭代算法
#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef int T;typedef struct list { int size; T elements[MAXSIZE];}List;void Merge(List* lst, T temp[], int i1, int j1, int i2, int j2, int* k) { int _i1 = i1; int _i2 = i2; whi..
2022-01-16 12:03:51 455
原创 交换排序-快速排序的非递归算法
//stack.h#ifndef __STACK_H__#define __STACK_H__#include<stdio.h>#define MaxSize 500#define FALSE 0#define TRUE 1typedef struct stack { int top, maxstack; int element[MaxSize];}Stack;void CreateStack(Stack* s, int m){ s->top = -1; s.
2022-01-16 10:47:51 95
原创 交换排序-快速排序
#include<stdio.h>#include<stdlib.h>#include <string.h>#define Swap(x,y, t) ((t)=(x), (x)=(y), (y)=(t))#define MAXSIZE 100typedef int T;typedef struct list { int size; T elements[MAXSIZE];}List;int Paitition(List* lst, int left,
2022-01-15 22:53:58 66
原创 交换排序-冒泡排序-常规版与改进版
#include<stdio.h>#include<stdlib.h>#include <string.h>#define Swap(x,y, t) ((t)=(x), (x)=(y), (y)=(t))#define MAXSIZE 100typedef int T;typedef struct list { int size; T elements[MAXSIZE];}List;void BubbleSort(List* lst) { int
2022-01-15 22:43:30 58
原创 直接擦插入排序-希尔排序
#include<stdio.h>#include<stdlib.h>#include <string.h>#define MAXSIZE 100typedef int T;typedef struct list { int size; T elements[MAXSIZE];}List;void InsSort(List* lst, int h, int offset) { int i, j; T x; for ( i = offset+h ; i
2022-01-15 16:13:54 155
原创 直接插入排序-链表形式与顺序表形式
//链表形式的直接插入排序#include<stdio.h>#include<stdlib.h>typedef int T;typedef struct node { T element; struct node* Link;}Node;typedef struct list { Node* First;}List;Node* NewNode(T x) { Node* n = (Node*)malloc(sizeof(Node)); n->elemen
2022-01-13 23:18:57 234
原创 邻接表有向图是否包含回路
//我在这里其实是找不到有几条回路的,这个函数只能判断图里面有没有回路。下面的那个找出几条回路的是不完善的。如果你能完善这些功能,请在评论区给出你的答案,谢谢#include<stdio.h>#include<stdlib.h>//int target=0; //相当于一把枪,这把枪射出去一颗子弹,这颗子弹在如果在中途射中了这把枪,就说明图中存在一条回路,那么count回路计数器就加一//int count = 0; //指示图中有多少个回路 typedef struct
2022-01-09 17:13:29 778
原创 最短路径-弗洛伊德算法-所有顶点之间的最短路径
#include<stdio.h>#include<stdlib.h>#define BOOL int#define TRUE 1#define FALSE 0![请添加图片描述](https://img-blog.csdnimg.cn/7578a9be5f104c00ad1dbd89191f7216.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAL-aIkeeI...
2022-01-08 23:21:32 442
原创 最短路径-迪杰斯特拉算法-单源最短路径
#include<stdio.h>#include<stdlib.h>#define BOOL int#define TRUE 1#define FALSE 0#define T int#define SIZE 6#define MAXNUMBER 99typedef struct graph { int NoEdge; int Vertices; int** A;}Graph;void CreateGraph(Graph* g, int n, int...
2022-01-08 17:56:22 642
原创 克鲁斯卡尔算法_最小代价生成树
//PQueue.h#ifndef __PQUEUE_H__#define __PQUEUE_H__#include<stdio.h>#include<stdlib.h>#define MaxSize 101#define E inttypedef struct edgenode { int u, v; E W;}EdgeNode;#define T EdgeNodetypedef struct minheap { int Size; T E...
2022-01-07 20:06:09 100
原创 普里姆算法_最小代价生成树_邻接矩阵表示法
基本思想:最小生成树问题的概念—普里姆算法是从点的角度来解决。若在解决问题过程中需要遍历图的所有点,则普里姆算法更好。普里姆算法更像构建一棵树。联想我们构建二叉树的过程,从根节点出发,构建左右子树,再以左右子树为根节点,构建它们的左右子树。普里姆算法设一个点集V,初始时只有源点,从点集的点出发遍历所有以它们为起点的边,找到其中权值最小的边,且这条边的终点不在点集V中,然后将终点加入点集,再从点集V中的所有点出发,找一条权重最小的边。从点集中的点向外发散,构建起最小生成树。#include<
2022-01-05 22:27:52 852
原创 普里姆算法_最小代价生成树_邻接链表表示法
额,教科书上的案例是错误的,Prim算法没有那么简单,短短的几行代码根本实现不了。不过仍然向它致敬,因为理论讲的很透彻,我也是根据理论写出来这个复杂代码的,本算法的基本数据结构是邻接表。Prim算法简介:(这里转载网友的介绍~)最小生成树问题的概念—普里姆算法是从点的角度来解决。若在解决问题过程中需要遍历图的所有点,则普里姆算法更好。基本思想:普里姆算法更像构建一棵树。联想我们构建二叉树的过程,从根节点出发,构建左右子树,再以左右子树为根节点,构建它们的左右子树。普里姆算法设一个点集V,初始时只有源
2022-01-05 21:30:57 466
原创 图的存贮结构_邻接链表表示法
#include<stdio.h>#include<stdlib.h>typedef struct enode { int AdjVex; int W; struct enode* NextArc;}ENode;typedef struct graph { int Vertices; ENode** A;}Graph;void CreateGraph(Graph *g, int n){ int i; g->Vertices = n; g->A
2022-01-01 23:27:31 204
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人