编程艺术栈
文章平均质量分 84
编程之美
小码农UU
百引
展开
-
c++暗物质 内存管理
文章目录类与对象C++11 的成员初始化新玩法再次理解封装再次理解面向对象C/C++内存管理C/C++内存分布C语言中动态内存管理方式【面试题】C++内存管理方式new/delete操作内置类型总结玩个好玩的,malloc/new到底能申请多大的空间operator new与operator delete函数(重要点进行讲解)operator new与operator delete函数(重点) operator new与operator delete的类专属重载(了解)new和delete的实现原理内置类.原创 2022-02-04 16:15:34 · 496 阅读 · 36 评论 -
linux指令笑谈,权限小识 键盘修炼者2.0
文章目录linux指令Cal指令find指令:(灰常重要) -namegrep指令zip/unzip指令:tar指令(重要):打包/解包,不打开它,直接看内容bc指令:uname –r指令:重要的几个热键[Tab],[ctrl]-c, [ctrl]-d关机fileshell命令以及运行原理深刻理解Linux权限的概念Linux下有两种用户:超级用户(root)、普通用户“xxx is not in the sudoers file.This incident will be reported” 错误解决方.原创 2022-02-02 18:43:32 · 2390 阅读 · 43 评论 -
c++虫洞 STL string
文章目录STL什么是STLSTL版本原始版本P. J. 版本RW版本SGI版本STL的六大组件如何学习STLSTL的缺陷接下来我们要学的第一个容器就是string为什么学习string类?C语言中的字符串标准库中的string类string类(了解)string类的常用接口说明(注意下面我只讲解最常用的接口)1.string类对象的常见构造2.string类对象的容量操作3.string类对象的访问及遍历操作4.string类对象的修改操作5.string类非成员函数几题小菜[找字符串中第一个只出现一次的字原创 2022-01-30 14:54:02 · 1700 阅读 · 54 评论 -
c++鬼森 类和对象 友元 再谈构造 static 内部类
文章目录类与对象类的6个默认成员函数const成员取地址及const取地址操作符重载友元函数友元类再谈构造函数构造函数体赋值初始化列表explicit关键字匿名对象static成员概念特性内部类类与对象类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数const成员将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在原创 2022-01-26 20:24:20 · 473 阅读 · 14 评论 -
c++仙阁 类和对象 他化万古 日期类
文章目录@[toc]日期类Date.hDate.cpptest.cpp测试情况功能添加日期加天数后那个日期日期加天数日期++,++日期前置++后置++日期减天数后那个日期日期减天数日期--,--日期前置--后置--修一修bug若是-=里面的日期是负数的话若是+=里面的日期是负数的话比较运算符大于 >等于 == 大于等于 >= 小于< 小于等于 <= 不等于 != 生活实际我们思考一个问题就是日期减日期有没有意义代码Date.hDate.cpptest.cpp日期类我们要有一个原创 2022-01-21 17:01:57 · 1500 阅读 · 68 评论 -
c++归来 内联函数
内联函数概念三级标题以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率所以为了解决被频繁调用的方式,c语言中用宏来解决的(宏是一种替换,不是调用,本质了解一下)写一个两数相加的宏但是宏要考虑的细节很多(也就是很烦),所以c++就给出了轻便的方式 内联函数 inlinedebug模式下 看一下汇编release模式下 直接优化的很彻底,没有展开的那个部分了虽然debug版.原创 2022-01-11 18:20:09 · 824 阅读 · 49 评论 -
c++筑器 c和c++静态库动态库互调
文章目录c++筑器 c与c++静态库互调vs19下静态库动态库互调C++调C第一步建静态库1.创建空项目,把 Stack.c 和 Stack.h 放进来2.修改项目属性为静态库属性调用静态库链接动态库extern “C”C调C++法一法二总结c++筑器 c与c++静态库互调vs19下静态库动态库互调C++调C我们就用以前的括号匹配做例子。当时我们是用栈来操作的,然后在我们真正需要执行的函数前把栈的函数一一的写出来,这样的的确确可以锻炼我们开始的代码能力,但是也不可以一直原创 2021-12-13 09:37:30 · 866 阅读 · 54 评论 -
C++筑器 引用生死唯一
文章目录C++ 引用(这篇博客是我现有知识只能这样写) 引用 语法层引用概念引用特性引用做参数传值传址传引用传值、传引用效率比较引用做返回值传值返回 所有的传值返回都会生成一个==拷贝==传引用返回值和引用的作为返回值类型的性能比较传值和指针在作为传参以及返回值类型上效率相差很大。修改返回对象常引用左值右值 引用 低层引用和指针的不同点:C++ 引用(这篇博客是我现有知识只能这样写)语法层和底层分开看基本没什么问题,但是一旦两原创 2021-12-08 02:34:47 · 780 阅读 · 71 评论 -
算法给小码农计数排序尊者
文章目录排序常见的排序算法 扩展计数排序 不进行数据的比较,而是统计数据出现的次数计数排序计数排序的特性总结测性能1000 一千10000 一万100000 十万1000000 一百万10000000 一千万排序总结稳定性八大排序总结排序常见的排序算法 扩展计数排序 不进行数据的比较,而是统计数据出现的次数思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤统计相同元素出现次数根据统计的结果将序列回收到原来的序列中我原创 2021-12-03 18:10:06 · 1608 阅读 · 48 评论 -
算法给小码农归并排序列阵
文章目录排序常见的排序算法常见排序算法的实现归并排序基本思想递归写法通过调试看一下现象归并顺序归并排序递归子函数归并排序递归实现非递归写法2^n^个元素的数组随便几个元素的数组修正下标归并排序非递归实现 修正下标归一部分拷一部分归并排序非递归实现 归一部分拷一部分时间复杂度测性能1000 一千10000 一万 ==先抛弃选择和冒泡==100000 十万 ==再抛弃直接插入==1000000 一百万10000000 一千万代码S原创 2021-12-01 13:31:30 · 784 阅读 · 40 评论 -
算法给小码农冒泡排序铭纹,快速排序四极
文章目录排序常见的排序算法常见排序算法的实现冒泡排序 ==也是我们本身接触最早的排序 很简单的一个排序==完整冒泡排序代码快速排序(无敌的排序)将区间按照基准值划分为左右两半部分的常见方式有:1.hoare版本==(发明快排的人用的方法)==最左边做key最右边做key测性能选1000 一千选10000 一万选100000 十万选1000000 一百万选10000000 一千万但是想想上面快排有没有什么缺陷 明明是秒男还想在特殊情况下当持久男 哈哈如原创 2021-11-27 21:26:08 · 7287 阅读 · 71 评论 -
算法给小码农选择排序搬血,堆排序化灵
文章目录排序常见的排序算法常见排序算法的实现选择排序 ==最慢排序(最好理解)所以搬血==基本思想:直接选择排序数据交换 ==剥离出来其他函数也会用到 我明明是简洁之人为了一时的高级而忘记了朴素罪过罪过==选择排序堆排序向下调整函数堆排序代码测性能 ==让你看看什么叫堆====1000大小数组 一千====10000大小数组 一万====100000大小数组 十万====1000000大小数组 一百万====10000000大小数组 一千万 我们不带选择,插入玩太拉原创 2021-11-23 07:17:55 · 1117 阅读 · 71 评论 -
算法给小码农插入排序洞天,希尔排序轮回
文章目录排序排序的概念及其运用排序的概念排序运用==来上京东====大学排名==常见的排序算法常见排序算法的实现插入排序基本思想==但是数组肯定不是有序的,所以我们得先让数组有序==先把打印数组给剥离出来插入排序希尔排序( 缩小增量排序 ) (反正希尔牛逼)希尔排序步骤==**单组多躺**====**多组插入**====**多组一锅炖(要是分组插麻烦我们也可以一锅炖)**====**多次预排序(gap > 1)+直接插入(gap == 1)**==测直接插入排序和希尔排序的性能(让你看看什么才叫希原创 2021-11-20 05:00:00 · 5613 阅读 · 47 评论 -
算法给小码农链式二叉树-----一根草可斩星辰
文章目录链式二叉树那么链式二叉树有什么好的地方呢二叉树的遍历前序、中序以及后序遍历按照规则,二叉树的遍历有:前序/中序/后序的递归结构遍历:(上图为例图)(前中后访问根的时机不一样)分治二叉树二叉树节点我们把上面的树建好二叉树前序遍历二叉树中序遍历二叉树后序遍历二叉树节点个数次数用传址的方式次数用返回值的方式(假如我是代码我必然要嫁给这条代码)二叉树叶子节点个数二叉树第k层节点个数二叉树深度/高度二叉树查找值为x的节点代码BinaryTree.hBinaryTree.ctest.c链式二叉树我们需要原创 2021-11-15 05:00:00 · 16443 阅读 · 84 评论 -
算法给小码农堆排序至尊骨
文章目录堆排序升序一种非常正常的想法 空间复杂度O(N)堆升序函数HeapSort堆排序测试函数建堆(向上向下为建堆)向上调整(建大堆)交换排序&&再向上调整堆排序代码堆排序测试向下调整排升序 构建小堆排升序 构建大堆堆排序测试堆排序降序向上调整 (建小堆)向下调整(建小堆)建堆的时间复杂度堆排序升序一种非常正常的想法 空间复杂度O(N)把数组中的元素全都push到小堆中,然后再取堆顶元素重新给数组,就可以达到升序的效果了堆升序函数HeapSort//升序void原创 2021-11-12 06:00:00 · 3987 阅读 · 56 评论 -
算法给小码农TopK重瞳双目
文章目录Topk1000个数中找到最大的前十个方式1:方式2:==方式3:==Topk打印函数TopkPrint没有修改的接口见 [算法给小码农堆魂器--铁血柔情](https://blog.csdn.net/diandengren/article/details/121218819?spm=1001.2014.3001.5501)改掉的接口向上调整函数向下调整函数然后在Heap.h文件中加入Topk在n个数中找出最大的前K个 or 在n个数中找出最小的前K个(n>K)1000个数中找原创 2021-11-10 01:16:41 · 999 阅读 · 33 评论 -
算法给小码农堆魂器--铁血柔情
文章目录堆堆的概念及结构堆的性质堆的结构(这里实现大堆)堆的结构体堆初始化函数HeapInit堆销毁函数HeapDestroy堆打印函数HeapPrint向上调整函数AdjustUp堆插入函数HeapPush判断堆是否为空函数HeapErmpy返回堆大小函数HeapSize交换函数Swap向下调整函数AdjustDown堆删除函数HeapPop代码Heap.hHeap.ctest.c堆数据结构中的堆不同于操作系统中的堆(操作系统中的堆是用来存储动态内存的),数据结构中的堆是数据的存储方式。数据结构中的堆原创 2021-11-09 05:00:00 · 818 阅读 · 27 评论 -
算法给小码农二叉树魂铠战衣
文章目录二叉树树的概念及结构树的概念==注意:树形结构中,子树之间不能有交集,否则就不是树形结构==如何表示树呢(其他方法不说了最近很忙,直接玩最牛逼的方法)二叉树概念及结构概念特殊的二叉树:满二叉树完全二叉树二叉树的性质还有明天定时再发 略略略[主要是为了偷塔哈哈哈]二叉树树的概念及结构树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没原创 2021-11-06 05:00:00 · 582 阅读 · 8 评论 -
算法开启循环队列武魂
文章目录设计循环队列题目数组形式(通过下标控制来达到循环的效果)环队结构体(数组)环队初始化判断环队为空判断环队为满环队入数据并入成功返回真环队删数据并删成功返回真环队取队头数据(对空返回-1)环队取队尾数据(对空返回-1)环队销毁环队(数组实现)链表形式环队结构体(链表)环队初始化判断环队为空判断环队为满环队入数据并入成功返回真环队删数据并删成功返回真环队取队头数据(对空返回-1)环队取队尾数据(对空返回-1)环队销毁环队(链表实现)设计循环队列题目我们会使用一种队列叫循环队列。如操作系统课程讲解原创 2021-11-05 06:43:05 · 1025 阅读 · 40 评论 -
算法开启栈转队列武魂
文章目录==**栈接口见 [算法开启小码农栈血脉](https://blog.csdn.net/diandengren/article/details/121055584?spm=1001.2014.3001.5501)**==用栈实现队列题目队结构体队初始化入“队”出“队”并取出队元素返回队头判断队空队列销毁队列代码(接口代码去我之前文章取) [算法开启小码农栈血脉](https://blog.csdn.net/diandengren/article/details/121055584?spm=1001.原创 2021-11-03 05:00:00 · 622 阅读 · 25 评论 -
算法开启队列转栈武魂
文章目录==**队列接口见 [算法开启小码农队列血脉](https://blog.csdn.net/diandengren/article/details/121072953?spm=1001.2014.3001.5501)**==用队列实现栈题目栈结构体栈初始化入“栈”出“栈”并取栈顶元素取栈顶元素判断栈空栈销毁栈代码(接口代码去我上面文章取) [算法开启小码农队列血脉](https://blog.csdn.net/diandengren/article/details/121072953?spm=100原创 2021-11-02 05:00:00 · 1215 阅读 · 31 评论 -
算法开启小码农队列血脉
队列队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据(就会挪动数据),效率会比较低代码模块队列节点typedef int QDatatype;typedef struct QueueNode原创 2021-11-01 05:00:00 · 1868 阅读 · 34 评论 -
算法开启小码农栈血脉
栈栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶出栈:栈的删除操作叫做出栈。出数据也在栈顶栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。栈节点typedef int STDataType;typed原创 2021-10-30 19:55:40 · 1325 阅读 · 34 评论 -
算法开启小码农双链表血脉
文章目录==也欢迎大家能来到我们小伙伴的社区 [慧编程开源俱乐部](https://bbs.csdn.net/forums/mzt)==双链表双链表结构图双链表节点双链表初始化函数ListInit双链表尾插函数ListPushBack双链表打印函数ListPrint双链表尾删函数ListPopBack双链表头插函数ListPushFront获得双链表节点函数BuyListNode双链表头删函数ListPopFront双链表查找函数ListFind双链表插入函数ListInsert(pos之前插入因原创 2021-10-29 23:16:53 · 1767 阅读 · 35 评论 -
算法大神对小码农说复制随机链表可以单独拿出来讲讲
文章目录复制带随机指针的链表题目思想==普通拷贝====顺藤摸瓜==(这个是真的奇兵记,暗度陈仓的感觉)==脱裤子还需提裤子人==(上面暗度陈仓,这个就是单刀直入)代码实现==cur为NULL的时候就是停止copy的时候====有人说为什么不在上面malloc节点的时候就链,因为那时候小孩还没出生你就让你的还在上学吗,没错为了卷你们,我准备偷偷生个小孩==复制带随机指针的链表天下傻逼独一个就是我,我忘记了选c语言,用c++结果错误看一脸懵逼题目这题链表的复制难的地方就是随机指针random 如何原创 2021-10-28 09:50:31 · 974 阅读 · 18 评论 -
算法大神对小码农说环形链表可以单独拿出来讲讲
文章目录环链环形链表题目分析延伸问题:==1.为什么fast和slow会在环中相遇,会不会有这么一种情况呢。就是在环中一直交错永远遇不上?请证明一下。==证明:==这里就又衍生出了一个问题就是slow与fast只要是步差为一就可以相遇====2.为什么slow走一步,fast走两步呢?fast可不可以走大于两步呢?==[环形链表 II](https://leetcode-cn.com/problems/linked-list-cycle-ii/)题目分析环链环形链表题目分析我们剖析一下代码原创 2021-10-26 23:51:42 · 1528 阅读 · 22 评论 -
身家过亿的帝都富豪来参加1024节专属盛典,小码农献上单链表一篇来庆祝盛典
文章目录身家过亿的帝都富豪来参加1024节专属盛典,小码农献上单链表一篇来庆祝盛典顺序表的缺陷链表链表的概念及结构链表的分类**1.单向或者双向****2.带头或者不带头****3.循环或者非循环**链表的实现无头单向单链表节点单链表打印函数SListPrint单链表尾插函数SListPushBack获得单链表节点函数单链表头插函数SListPushFront单链表尾删函数SListPopBack单链表头删函数SListPopFront单链表查找函数查询后修改单链表插入函数单链表后插函数单链表删除函数SLi原创 2021-10-22 16:45:39 · 2585 阅读 · 56 评论 -
身价过亿的帝都富豪对小码农说顺序表会了吗
文章目录有幸被富豪赏识,顺序表怎能不会联动文章 [五万字超详细Linux知识点](https://blog.csdn.net/qq_42832862/article/details/120793871)顺序表线性表顺序表(本质上就是数组)概念及结构顺序表一般可以分为:1. 静态顺序表:使用定长数组存储元素。2. 动态顺序表:使用动态开辟的数组存储。接口函数(==这里教你闭坑,不然有时候你不知道怎么死的(值传递与址传递的区别)==)顺序表初始化 SeqListInit值传递址传递尾插函数SeqListPush原创 2021-10-17 07:58:13 · 1272 阅读 · 42 评论 -
身价过亿的帝都富豪对小码农说预处理学的不错
文章目录为了给富豪面子,小码农写了这篇博客——程序环境和预处理==**帝都富豪与富家总裁联动文章 [身价过亿的女总裁对小码农说你按键会了吗](https://blog.csdn.net/qq_42832862/article/details/120678330?spm=1001.2014.3001.5502)**==程序的翻译环境和执行环境详解编译+链接编译环境预处理详解预定义符号#define**==#define 定义符号==****==注意==****==#define 定义宏==**==**注原创 2021-10-09 21:28:57 · 1302 阅读 · 31 评论 -
存储使者,内存驿站-文件操作
文章目录文件操作什么是文件程序文件数据文件文件名文件的打开和关闭文件指针文件的打开和关闭==打开方式==在程序目录下面没有data.txt文件在程序目录下面有data.txt文件data放在桌面同理写文件==注意这个w也不是谁便用的==文件的顺序读写fputc写字符函数==**流**==fgetc读字符函数注意fputs写字符串函数同样适用所有输出流fgets读字符串函数同理适应所有输入流fprintf格式化输出函数同理他适用所有输出流fscanf格式化输入函数同理适用所有输入流fwrite二进制输出函数=原创 2021-09-28 19:33:44 · 697 阅读 · 20 评论 -
一篇绕指柔——柔性数组
文章目录绕指柔—柔性数组柔性数组的特点:法一法二那上面那个方法好一点呢第一个好处是:方便内存释放第二个好处是:这样有利于访问速度.==总结==绕指柔—柔性数组也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构体中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。柔性数组的特点:结构中的柔性数组成员前面必须至少一个其他成员。sizeof 返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行原创 2021-09-27 06:59:08 · 684 阅读 · 53 评论 -
内存分配者-动态内存
文章目录动态内存管理为什么存在动态内存分配动态内存函数的介绍malloc==申请空间==和free==释放空间==那我们可不可以看开辟失败的呢有借有还 ==free释放内存==注意calloc申请内存realloc调整动态内存的大小realloc使用的注意事项当然realloc也可以直接开辟空间常见的动态内存错误**1.对NULL指针的解引用操作****2.对动态开辟空间的越界访问****3.对非动态开辟内存使用free释放****4.使用free释放一块动态内存开辟的一部分****5.对同一块动态内存多次原创 2021-09-21 20:23:11 · 893 阅读 · 53 评论 -
爱旋不旋--旋转字符串
文章目录旋转字符串字符串左旋题前认知:暴力移位:三步翻转:还有3种方法但那三种就需要很强的数学功底了,具体的我也看不懂他怎么证明的数学公式,就不看了。哈哈哈判断字符串旋转题前认知字符串追加判断==(面试的时候能用库函数就用库函数)==旋转字符串字符串左旋实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB题前认知:一个字符串如果就定死了。eg:char arr[]=“dfdf”什么的那多没意思,一点都没有人机交互的感觉,(虽然现在人原创 2021-09-13 23:23:52 · 535 阅读 · 14 评论 -
编程之美-内存函数
文章目录内存函数memcpy内存拷贝原格式分析内存拷贝的问题1.内存相关连的话,就会拷贝错误所以为了解决重叠拷贝的问题就有了memmove这个函数memmove内存重叠拷贝C语言规定原格式分析memset内存设置原格式分析memcmp内存比较原格式分析内存函数memcpy内存拷贝函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到 ‘\0’ 的时候并不会停下来。如果source和destination有任何的重叠,复制的结果都是未定原创 2021-09-13 01:22:28 · 293 阅读 · 10 评论 -
编程之美-字符串函数
文章目录字符串函数求字符串长度原格式1.计数器方法2.递归3.指针-指针==长度不受限制==的字符串函数strcpy字符串拷贝原格式开始分析strcat字符串追加原格式开始分析注意:(绝对不可以自加)strcmp字符串比较原格式==长度受限制==的字符串函数strncpy原格式分析strncat原格式分析strncmp原格式分析字符串查找strstr找子字符串原格式分析strtok原格式分析错误信息报告strerror原格式分析总结:字符串函数c语言中对字符和字符串的处理很是频繁,但是c语言本身是没有字原创 2021-09-12 13:26:25 · 489 阅读 · 6 评论 -
二维数组中的查找
文章目录二维数组中的查找面试题3:似题:暴力遍历动态基点操作二维数组中的查找面试题3:似题:我做过这个类似的有杨氏矩阵为背景的,实际上是一样的暴力遍历二维数组暴力遍历的话时间复杂度为O(n2)虽然暴力但是应付学校考试这个就是一把好手#include<stdio.h>//const 就是因为二维数组是定死的int search(const int arr[4][4], int num,unsigned int* prow,unsigned int* pcol){ int原创 2021-09-10 17:24:44 · 285 阅读 · 5 评论