
C++
文章平均质量分 80
leno米雷
这个作者很懒,什么都没留下…
展开
-
堆(Heap)的实现
这次实现了堆,这个堆不是指系统堆栈的堆,是一种数据结构,见下图堆的本质就是一个数组(上图中,红色的是值,黑色的是下标)简单的来说就是把一个数组看成是二叉树,就像上图大堆和小堆分别是指根节点比孩子节点的值大或者是小,看了上图之后就可以发现,父亲节点和孩子节点之间下表的关系,parnet=(child-1)/2利用这个关系就可以实现堆了,堆的基本方法有构造,析构,插入,删除,像大堆小堆这样特殊的堆肯定...原创 2018-02-06 20:01:55 · 245 阅读 · 0 评论 -
字符串翻转
反转字符串:翻转一个字符串的顺序,单词内部顺序不变,输入 I am a boy 输出 boy a am I我是真的很健忘了,字符串翻转说是很好写的,但是在写的过程中进行了多次修改才得出正确结果,只知道想法远远比不上真正动手去写一遍。这题目是老套路了,刷题过程中要是见过的话,印象会比较深,两次翻转,先对字符串整体翻转一遍,然后对字符串中的每个单词都翻转一遍例如 I am a boy翻转一遍之后是...原创 2018-03-15 20:28:38 · 293 阅读 · 0 评论 -
linux下进度条的编写和实现
实现了一个简单的进度条,主要技术啥的算不上,但有几个需要注意的点首先是回车符,回车符可不是\n,我们可以把\n看成是两个动作的合体,分别是,回车和换行,都有自己对应的符号,这利用回车符一直在同一个位置输出造成动态的假象因为没有用到\n和换行,但是C语言的printf是行缓冲输出,什么意思呢?就是说不满一行不输出,就是靠\n输出的,没有\n只好强制把缓冲中的数据输出出来,这就要用到函数ffl原创 2018-02-06 20:02:21 · 245 阅读 · 0 评论 -
排序详解(希尔,快排,归并等)
今天集中把几种排序的方法列一下,当然最出名的希尔,快排,归并和其优化当然也是满载说到希尔排序的话,不得不先提到的就是插入排序了,希尔排序就是对直接插入排序的一种优化,下面就是直接插入排序的思想直接插入排序void InsertSort(int *a, size_t size){ assert(a); for (int i = 1; i < size; ++i)原创 2018-02-06 20:01:30 · 342 阅读 · 0 评论 -
排序补充(计数基数排序)
void CountSort(int *a , size_t size){ int max = a[0], min = a[0]; for (int i =1; i < size; ++i) { if (max < a[i]) { max = a[i]; } if (min > a[i原创 2018-02-06 20:01:33 · 411 阅读 · 0 评论 -
函数栈帧(用汇编来剖析)
好久没写博客了,学校开始实习,找了一个极破的地方,站公交将近两个小时,一天来回就要死了,说是实习,就是变着样的培训,一点实习的意思都没有,辣鸡。这次讲解一下C++函数调用,学了这么久C语言,肯定听说过栈(数据结构啊,地址空间的栈啊之类的),函数调用就和栈密切相关。因为地址空间内的栈是从高地址向低地址生长的,也就是说压栈顺序靠后的反而地址比较低,栈底的地址高于栈顶的地址,下面贴上一段测试代码原创 2018-02-06 20:02:35 · 228 阅读 · 0 评论 -
父子进程执行流(题目解析)
在牛客网上刷题的时候看见这么一道题#include #include原创 2018-02-06 20:02:38 · 491 阅读 · 0 评论 -
atexit函数和两种特殊文件权限位
atexit函数atexit函数的原型如下 void atexit(void (*func)(void)) 它是一个参数为返回值和参数均为空的函数指针的函数,含义是当前进程结束之前执行参数函数指针所指向的函数,使用的时候要在main中注册,一次可以注册很多函数,函数的执行顺序与注册的先后有关,关系恰好相反,第一个注册的函数反而是最后一个执行。下面是执行实例。 #include#inc原创 2018-02-06 20:02:32 · 153 阅读 · 0 评论 -
模拟Linux的shell
在学习了Linux的进程控制之后,学习了fork函数和exec函数族,通过这些个函数可以简单的实现一份shell,就是实现一份命令行解释器,当然是简单版的,实现功能如下能执行普通的命令如ls ,ps ,top等可以实现目录的跳转cd命令能执行命令并加上参数如ls-l能执行打开man手册能识别管道符还不能实现正则表达式,要实现这个我当前的代码根本不能用,要重头开始改写。。。下面贴代码原创 2018-02-06 20:02:43 · 231 阅读 · 0 评论 -
return和exit函数的区别
在上Linux课的时候,老师提到一句,调用vfork产生的子进程就是为了使用exec族函数来执行其他的代码逻辑。在子进程退出的时候有两种方式,exit和exec族函数,不能使用return,为什么不能用return呢,为什么只有vfork会不让用return呢?于是我就写了这样的代码#include原创 2018-02-06 20:02:41 · 209 阅读 · 0 评论 -
[C++11] lambda表达式
ISO C++ 11 标准的一大亮点是引入Lambda表达式。基本语法如下:[capture list] (parameter list) ->return type { function body }简单的讲一下各个部分的作用[capture list]捕获列表,捕获到函数体中,使得函数体可以访问(parameter list)参数列表,用来表示lambda表达式的参数列表->r原创 2018-02-06 20:03:11 · 194 阅读 · 0 评论 -
模拟XShell的小项目
不知道大家有没有用过XShell这款工具,这款工具通过windows可以远程操作处于开机状态的linux操作系统,也就是说把你的电脑和一台服务器连入网络,你通过输入服务器所在的IP地址建立一个会话就可以远端操作linux的服务器了,十分方便。这次这个模拟XShell的小项目就是类似的功能 执行流程:windows客户端输入命令,通过网络传输到linux服务器端上,linux服务器端原创 2018-02-06 20:03:06 · 461 阅读 · 0 评论 -
进程间通信(三)—信号量
我会用几篇博客总结一下在Linux中进程之间通信的几种方法,我会把这个开头的摘要部分在这个系列的每篇博客中都打出来进程之间通信的方式管道消息队列信号信号量共享存储区套接字(socket)进程间通信(五)—信号传送门:http://www.cnblogs.com/lenomirei/p/5656449.html进程间通信(四)—共享存储区传送门:http://www.cnblog原创 2018-02-06 20:02:51 · 306 阅读 · 0 评论 -
进程间通信(一)—管道
我会用几篇博客总结一下在Linux中进程之间通信的几种方法,我会把这个开头的摘要部分在这个系列的每篇博客中都打出来进程之间通信的方式管道消息队列信号信号量共享存储区套接字(socket)进程间通信(二)—消息队列传送门:http://www.cnblogs.com/lenomirei/p/5642575.html进程间通信(三)—信号量传送门:http://www.cnblog原创 2018-02-06 20:02:46 · 270 阅读 · 0 评论 -
进程间通信(四)—共享内存
我会用几篇博客总结一下在Linux中进程之间通信的几种方法,我会把这个开头的摘要部分在这个系列的每篇博客中都打出来进程之间通信的方式管道消息队列信号信号量共享存储区套接字(socket)进程间通信(五)—信号传送门:http://www.cnblogs.com/lenomirei/p/5656449.html进程间通信(三)—信号量传送门:http://www.cnblogs.原创 2018-02-06 20:02:54 · 342 阅读 · 0 评论 -
进程间通信(二)—消息队列
我会用几篇博客总结一下在Linux中进程之间通信的几种方法,我会把这个开头的摘要部分在这个系列的每篇博客中都打出来进程之间通信的方式管道消息队列信号信号量共享存储区套接字(socket)进程间通信(一)—管道传送门:http://www.cnblogs.com/lenomirei/p/5636339.html进程间通信(三)—信号量传送门:http://www.cnblogs.原创 2018-02-06 20:02:49 · 274 阅读 · 0 评论 -
进程间通信(五)—信号
我会用几篇博客总结一下在Linux中进程之间通信的几种方法,我会把这个开头的摘要部分在这个系列的每篇博客中都打出来进程之间通信的方式管道消息队列信号信号量共享存储区套接字(socket)进程间通信(四)—共享存储区传送门:http://www.cnblogs.com/lenomirei/p/5651995.html进程间通信(三)—信号量传送门:http://www.cnblo原创 2018-02-06 20:02:57 · 242 阅读 · 0 评论 -
STL库的内存配置器(allocator)
正在学习中,如果有错,还请多多指教,根据不断的理解,会进行更改,更改之前的样子都会保留下来,记录错误是最大的进步,嗯嗯!具有次配置力的SGI空间配置器(SGI是STL的一种版本,也有其他的版本)这里我就不贴出来具体成员和接口的实现了,网上可以搜到STL的源码C++中,new一个变量可以分为两个阶段,1.分配空间 2.调用构造函数;delete变量也分为两个步骤,1.调用析构函数 2.释原创 2018-02-06 20:01:22 · 257 阅读 · 0 评论