- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 右值引用总结
右值引用若不作为函数参数使用,基本等于滥用2.std::vector<int>&& return_vector(void){ std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp);}std::vector &&rval_ref = return_...
2018-06-18 18:19:46
513
原创 从统一资源分配符讲解移动语义
前导知识: 1. 右值引用和其他引用一样,都是某个对象的别名 2. 右值引用绑定到的都是即将被销毁的并且没有其他用户的对象 3. 析构函数是系统进行析构前执行的最后一个函数,用以收尾,比如系统在析构某个指针的时候只会将栈上的指针析构掉而不会去把指针指向的那块内存析构掉,所以析构函数就是把这个指针指向的堆上的内存delete掉使其变成指向nullptr的空壳,然后系统进行析构时就不会造成内存泄...
2018-06-18 11:18:34
276
原创 什么是copy and swap
闲话少说,下面代码的前提是什么就不铺开讲了,只说明String是自定义的string类operator=的传统做法是:class String{ String&operator=(const String& s) { String temp(s); temp.swap(*this); return *this...
2018-06-14 21:00:00
362
转载 <算法4>第四章图算法总结
该博客原地址http://blog.csdn.net/ntt5667781/article/details/52743342其实就是对书上的内容做了个总结在开始各类图算法之前,先将图的结构进行分类。 图的表示,在实际实现过程中,有以下几种基本的方式可以来表示图。 1) 邻接矩阵:对于较小或者中等规模的图的构造较为适用,因为需要V*V大小的空间。 2) 边的数组:使用一个
2017-07-04 20:23:59
4365
原创 哈弗曼编码的java实现
import java.util.*;/** * Created by lipu on 17-6-28. */class Node { Character c; int power; Node left = null; Node right = null; boolean isC = false; String s = null; Node(C
2017-06-29 15:39:52
426
原创 malloc calloc realloc free的简单实现
写在前面:csdn的博客排版就是shit,祝早日关门大吉内存分配其实是个必修课,应该清楚地知道一个程序在计算机中的内存分布情况,linux程序在内存中的分布情况是这样的: 当然啦除了知道诸如“堆从低地址向高地址增长栈从高地址从低地址增长”这种东西之外最好还要知道“什么是分页为什么分页malloc的内部实现用到了brk()sbrk()MMU是什么”之类的这种东西。切入正题,一个简单的malloc实现
2017-05-23 20:40:56
532
原创 有趣的printf
sbrk()是linux上malloc的实现中用到的一个函数,sbrk(0)返回的是当前break的地址,今天我无意中多次打印sbrk(0)的值,发现结果和预想中的不太一样printf("%p\n", sbrk(0));printf("%p\n", sbrk(0));printf("%p\n", sbrk(0));printf("%p\n", sbrk(0));运行这段代码,打印出来的却是0
2017-05-21 15:27:54
346
原创 deepin再见
系统用着再顺手也抵不住无法容忍的bug,15.4这次更新真的伤人啊..好像每次大版本更新都更炸..不能忍了,deepin再见。(已上linuxMint的贼船
2017-04-24 10:20:03
556
4
原创 有向图Kosaraju算法的正确性证明
Kosaraju的工作过程是: 1.在给定的一副有向图G中,首先取得它的反向图,然后计算反向图的逆后续排列 2.在G中进行标准的深度优先搜索,但是搜索的顺序是按照第一步中计算得出的顺序而非标准顺序来访问所有未被标记的顶点 3.在构造函数中,所有在同一个递归dfs()调用中被访问到的顶点都在同一个强连通分量中,可以通过标记来把它们取出来。命题: 使用深度优先搜索查找给定有向图G的反向图G1,根
2017-04-19 11:17:17
1950
原创 haskell中的函数柯里化和高阶函数
函数柯里化指的是“一个接收多个参数的函数实际上每次只接收一个参数,然后返回一个接收下一个参数的另外一个函数,此过程重复下去,直到所有参数接收完毕,并在最后返回结果”。这也是haskell中函数的性质--所有的函数实际上只也只能接收一个参数,但是有些函数接收了多个参数是因为它们返回了另外一个接收一个参数的函数。 高阶函数指的是:函数可以被当做参数传给另外的函数,也可以被当做返回值从某个函数返回
2017-04-04 15:00:33
1357
原创 Haskell快排代码
haskell这段递归快排只需要六行代码,而且还可以处理不同类型的数据,很优雅。qucikSort ::(Ord a)=>[a]->[a]qucikSort []=[]qucikSort (x:xs)= let smallerNum=[a|a<-xs,a<=x] largerNum=[a|a<-xs,a>x] in quickSort smallerNum++[
2017-04-01 17:12:16
1531
原创 二叉树已知前序,中序,求后序
今天上课时偶尔看到网易的面试题,二十四个选择题做了一个多小时只做对八个,菜的一笔。其中有一道二叉树已知前序中序求后序的题我想拿出来写一下解题思路。 首先明确什么是前序中序后序遍历。 前序:首先访问根节点,然后递归前序遍历左子树,再递归前序遍历右子树 中序:首先递归前序遍历左子树,访问根节点,然后递归前序遍历右子树 后序:首先递归后序遍历左子树,然后递归后序遍历右子树,然后访问根节点 那么,
2017-03-02 22:12:06
1038
原创 linux平台Android studio安装步骤
作为一个有追求的程序猿肯定不能被墙操啊,所以首先把墙操了再说..操墙过程暂且不表,以后有空再写个从选购境外服务器到自己搭梯子的完整教程。然后我们来到了一个“不存在”的网站:然后下载linux版本的as..下再完之后解压...cd ~/bin,执行./studio.sh然后在弹出来的窗口上一路下一步,由于as需要下载一些文件,所以期间需要设置一下代理,设置完之后,as就开始在
2017-02-24 17:35:18
473
原创 主机ip查找程序
《unix网络编程》看到第11章了,写了一个通过DNS从主机名查找主机IP的小程序,测试环境:linux,测试结果:源码如下:#include#include #include #include #include #include #include int main(int argc,char **argv){ char *ptr,**pptr;
2017-02-24 12:44:34
354
原创 c++四种打印二维数组的风格
最近在学c++ 总结了一下这几种打印方式int ia[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};数组本尊在此1.完全c风格的输出二维数组p指向含有四个整数的数组,则*p就是那个数组,而数组名就是数组首元素的指针,所以*p即为p所指向的那个数组的首元素的指针 for(int(*p)[4]=ia;p!=ia+3;++p){//注意是!=而不是<
2017-02-23 20:22:12
11910
原创 《unix网络编程》中readline函数改进版
自己加了注释方便理解,希望帮到更多难以理解这段代码的人…/* my_read和readline的关系是, * readline调用my_read,my_read先读入需要的全部数据进入自己的缓冲区, * 每次my_read返回一个字符,循环至readline通过调用间接把read_buf缓存区内的数据读取完毕。 * 已读取的字节数由read_cnt存储,在第一次被调用之后的每次调用都通过该变量
2017-01-23 22:14:49
614
原创 广度优先搜索
/** * Created by eminem on 16-12-7. *///广度优先搜索public class BreadthFirstPaths { //从起点到达该顶点的最短路径已知吗 private boolean[] marked; //到达该顶点的已知路径上的最后一个顶点 private int[] edgeTo; //起点 pri
2016-12-07 20:15:45
306
原创 无向图的深度优先搜索
学到无向图了,有点难度但是能克服。代码看的很慢,但是不方,任何人想变成大神都不可能一蹴而就,都是经过不懈的努力,一点一点积累起来的。所以,加油啦! 手写了一遍无向图的相关内容,为了方便复习,注释写的很详细。记录在此。无向图Graph基类import java.util.Arrays;/** * Created by eminem on 16-12-5. *///p336 Graph数据类型/
2016-12-06 21:08:11
564
原创 LRU缓存实现
本着自己实操的原则..手撸了一遍算法4上一道LRU缓存的题,没用java自带的那坨东西,手写了一遍LRU要用到Hash散列表,双向队列,然而并没有看很懂书上写的用符号表存链表元素位置是干啥的。。这坨代码我自己都不想看了,太丑了。/** * Created by eminem on 16-11-29. * <p> * Created by eminem on 16-11-29. * 双向链表
2016-11-30 15:02:35
337
原创 这一篇是基于线性探测的散列表
//总感觉性能不如拉链法的散列表,java自带的那个实现也是用的拉链法//测试类如下:public class Fucktest{ public static void main(String[] args) { tanceSanLieBiao sanlie=new tanceSanLieBiao(); int num=1; cha
2016-11-23 21:46:23
599
原创 散列表
哦算法4上符号表的实现少了一个判断first是否为null的情况= =散列表实现如下:/** * Created by eminem on 16-11-22. */public class sanLieBiao { private int N; //链表数量 private int M; private SequentialSearchST[]
2016-11-22 20:40:04
284
原创 一棵没实现删除的红黑树
除了删除节点之外,把红黑树基本上看完了,顺手用java实现了一棵红黑树import javax.swing.*;/** * Created by eminem on 16-11-15. */public class brTree { private Node root; private static final boolean RED = true; privat
2016-11-17 12:45:52
299
1
原创 二叉查找树
算法4上的,正好学到这儿了package mySelfClass.BST;/** * Created by eminem on 16-9-20. */public class BST { private Node root; private class Node { private Node left, right; privat
2016-10-03 08:32:12
271
原创 一个非常快非常快的排序算法
当然这个算法不是快排.这个算法是我在知乎上无意中看到有人说了一句"开一个很大的数组"而受到启发,经过思考和反复修改,写出了这个算法(是我独立完成的,但是之前肯定有人写过..不过我不知道叫什么名字罢了)这个算法只能排序元素全部是正数的数组,虽然有局限性,但是速度非常非常非常快排序一个长度为1亿的随机数组(该数组的元素是1亿以内的随机正数)只需要几秒,比归并排序快得多,但是还没有跟快排比较..
2016-08-19 10:05:17
1114
2
原创 一个计时器
可以用来测试某段代码的运行时间package runTime;/** * Created by 小林未郁 on 2016/8/12. * fuckTime bitch=new fuckTime()以初始化该类 * 在某方法或者其他什么shit代码后面用bitch.timeLength()则返回执行这个shit花费的时间 */public class fuckTime {
2016-08-12 17:30:07
229
原创 斗地主发牌算法
写着玩package poker;import java.util.Random;/** * Created by 小林未郁 on 2016/8/11. */public class dealCards { static String[] flowerColor = {"黑桃", "红桃", "方片", "梅花"}; static String[] n
2016-08-11 22:15:58
2502
原创 动态连通算法
修改了好久嗯,在随机生成的整数对理想的情况下能较快处理几十万以内随机数对全部连通问题测试类:/** * Created by 小林未郁 on 2016/7/17. */import java.util.Random;import java.util.Scanner;import java.io.FileNotFoundException;import java.i
2016-08-05 09:40:16
668
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人