- 博客(63)
- 资源 (3)
- 收藏
- 关注
转载 大数加法 大数乘法
#include<iostream>#include<stdio.h>#include<string.h>#define MAXLEN 300//大数的长度using namespace std;int Input(char n[])//将大数读入的函数{ char s[MAXLEN]; int i, l; for (i = 0; i < MAXLEN; i++)
2016-05-15 21:46:26
933
原创 windows下类似linux readdir()读取文件
仿写头文件 dirent.h模拟linux下头文件 myDirent.h#ifndef MYDIRENT_H#define MYDIRENT_Htypedef struct _dirdesc { int dd_fd; /** file descriptor associated with directory */ long dd_loc; /** o
2016-05-04 11:02:29
2671
1
原创 计算年月日函数
一:判断是否为闰年bool isUnNormalYear(const long long year){ if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return true; else return false;}二:判断某年某月某日为星期几int CaculateWeek
2016-04-05 14:19:09
4012
转载 大端与小端
简单测试大端机器与小端机器用例:#include <iostream>bool isBigEnd(){ int a = 0x1234; char b = *(char *)&a; if (b == 0x12) return true; else return false;}bool isBigEnding(){ uni
2016-03-07 16:00:59
553
原创 new二维数组
第一种//first stack savechar A[MAX][MAX];第二种//second heap savechar *A = new char[N * M];(A + i * M + j) 表示 A[i][j]第三种//third heap savechar **A;A = new char *[N];for (int i = 0; i < N; ++i) A[i] =
2016-03-02 23:39:27
445
原创 高效生成素数
#include <iostream>#include <cmath>#include <ctgmath>#define MAX 100000000int main(){ bool *tagArray = new bool[MAX+1]; for (int i = 1; i <= MAX; ++i) { if (i % 2 == 1) t
2016-03-01 16:01:39
3940
原创 c++11随机数产生器default_random_engine
原因: c/c++老版本的rand()存在一定的问题,在转换rand随机数的范围,类型或者分布时,常常会引入非随机性。定义在<random> 中的随机数库通过一组协作类来解决这类问题:随机数引擎 和 随机数分布类 一个给定的随机数发生器一直会生成相同的随机数序列。一个函数如果定义了局部的随机数发生器,应该将(引擎和分布对象)定义为 static 的。否则每次调用函数都会生成相同的序列。随机数发生器
2016-02-25 10:55:37
22111
原创 利用gettimeofday简单测试程序用时
centos$ man 2 gettimeofday#include <sys/time.h>int gettimeofday(struct timeval *tv, struct timezone *tz);struct timeval { time_t tv_sec; // seconds suseconds_t tv_usec; //microseconds};
2016-02-24 15:41:16
1016
原创 运算符重载之 []
函数 operator[] 可以用于为类的对象定义下标运算的意义。operator[] 的第二个参数(下标)可以具有任何类型,这就使得我们可以去定义vector ,关联数组(仿写map)。eg: 用运算符重载的方式来进行词频统计,我们仿写一个关联数组:class Assoc {public: Assoc() {} const double& operator[](const st
2016-02-19 22:41:31
442
原创 istream_iterator ostream_iterator 迭代器和IO
头文件:#include <iterator>istream_iteratorostream_iterator成员函数:如同使用其他iterator一样来使用member function:operator*operator++operator=示范:istream_iterator#include <iterator>#include <iostream>int main(){
2016-01-28 14:32:49
491
转载 c++运算符重载
一:一般运算符的重载class A {public: A() { a = 0; b = 0; } A(const int left, const int right) : a(left), b(right) {} ~A() {} //成员函数重载 + - * / A operator+(A &elem) { return A(this->a + elem.a,
2016-01-14 12:03:55
367
原创 堆
一、描述堆其实就是一个数组,它被看做是一个近似完全二叉树,树上的每个元素的每个节点对应数组中的一个元素。除了最底层没有填充完,该树是完全的,而且是从左向右填充。表示堆的数组包括两个属性: A.length 通常表示数组元素的个数 A.heap_size 通常表示有多少个堆元素存储在数组中也就是说 A[1 … A.length] 可能都存有数据,但是只有 A[1 … A.heap_size] 存放
2015-12-16 21:27:10
503
原创 最短路径
问题一:只有五行的算法 floyd-warshallA准备去旅游,有些城市之间有公路,有些则没有,为了节省经费以及计划旅途,A希望知道任意两个城市之间的最短路程input:4 81 2 21 3 61 4 42 3 33 1 73 4 14 1 54 3 12第一行N M,代表节点数和边数 后面跟着 M 行代表边以及权值上图中有4个城市8条公路,数字代表公路的长短。 我们需要求任
2015-12-13 16:29:30
1856
原创 BFS
总体描述BFS 是最简单的图搜索算法之一。 Prim最小生成树算法和Dijkstra的单源最短路径算法都使用了类似BFS的思想。给定图G=(V, E)和一个可以识别的源节点s, BFS能够计算出从源点s到每个可以到达的节点的距离(最少的边数),同时生成一颗“BFS生成树“。BFS的搜索过程是沿着其广度方向扩展的,算法需要在发现了所有距离源点s为k的所有节点之后,才会发现距离源节点s为k+1的其他节
2015-12-08 21:27:17
796
原创 dfs
问题一:问题描述: 输入一个数n,输出1~n的全部排列。分析我们可以将这个问题换一个思路来描述,假设有123编号的扑克牌和123编号的箱子,需要将扑克放到箱子里去,一共有多少种放的方法呢?第一个箱子有3种,第二个剩下2种,最后一个1种,如此得到一种排列;那么,取出最后一个盒子的牌,退到倒数第二个箱子,此时我们有2种选择,去掉刚才已经选择过的,如此又得到了第二种排列;再退到倒数第三个箱子。。。这个
2015-12-08 16:14:36
491
原创 快速排序
概要理解快速排序的思想理解分治以及排序过程的设计巧妙之处深入理解时间复杂度分析,最好与最坏情况下的时间复杂度分析,生成树分析法,代入法,主方法。伪代码//返回的是分割点,即主元//循环维护的部分为四个部分// p...i...j.....r// p..i 维护 <= r 的元素// i+1 ... j 维护 > r 的元素// j+1 ... r-1 的元素暂时没有处理,一次过程只
2015-11-18 20:43:55
343
原创 Effective c++笔记:03 尽可能使用const
在const和non-const成员函数中避免重复对于‘bitwise-constness‘的问题,mutable是一个解决方法,但是不能解决所有。试想,假设TextBlock类的内部operator[]不仅仅返回一个reference指向某个字符,也执行边界检验,志记访问信息,甚至可能进行数据完整性检验。把所有这些功能同时放入const和non-const operator[]之中,将会导致长度颇
2015-09-21 22:05:30
510
原创 我辈楷模
无事看了下ibus-pinyin的about BYVoid 这个id 然后搜了下。。。。看图吧,不说了,都是10级,差距,呵呵。踏实过好每一天,努力努力努力! 懈怠了就来看看。
2015-09-20 16:26:08
839
原创 c++深拷贝与浅拷贝
类的聚集:类的成员中含有某个类的指针,就叫做类的聚集。对象中只存放数据的地址,数据可以是数组或者对象等。浅拷贝:对象之间的元素一一复制,这就是拷贝构造函数的本能。当数据成员是指针时,就会出现问题!深拷贝:被复制的对象数据成员是指针类型时,不会复制指针成员本身,而是将指针所指向的对象进行复制!浅拷贝demo#include <iostream>using namespace std;class B
2015-09-14 21:07:59
466
原创 邻接表
.h 文件#include <stdio.h>#include <stdlib.h>#define handler_error(msg) \ do { perror(msg); return EXIT_FAILURE; } while (1)struct arcnode{ size_t data; struct arcnode *next;};struct vexnod
2015-09-09 15:06:57
333
原创 libevent学习笔记一:总体把握
分析libevent如何使用 (官方手册,心得体会)源码分析 (event, event_base 为核心)引言标准c库便有许多参用了回调函数,让用户制定处理过程,比如常用的 qsort(3), bsearch(3)基本的socket编程时阻塞/同步的,线程在默认情况下占2~8M栈空间。posix的select(2)采用了轮循的方法来判断某个fd是否激活?故时间需要O(n),效率并不高
2015-07-28 17:37:26
630
原创 linux命令行解压缩小工具
bash的小技巧通过修改 /etc/bashrc 添加bash语句从而方便我们解压缩各种压缩文件,不用再记忆各种压缩指令了。在 /etc/bashrc 中添加:mytar () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1
2015-07-28 15:17:03
546
原创 同步调用,回调,异步调用
同步调用同步调用:阻塞式调用。举个栗子: A B C D 四个烽火台,需要传递消息。顺序是A->B->C->D。消息需要逐个传递,因此时间主要消耗在了等待上。回调回调:双向调用的方式。举个栗子: 依旧是A B C D四个烽火台,顺序依然是A B C D,假设烽火台多了一位士兵,在A接收到信息而还没有点燃烽火的时候,可以先将士兵派出,这个士兵即是“回调函数“。 此时,先执行回调函数,再执行后面的
2015-07-24 21:59:46
1372
原创 使用automake autoconf生成Makefile dh-make发布deb
使用automake,autoconf生成Makefile,dh-make发布deb包
2015-06-30 15:34:50
970
原创 分治策略
分治策略步骤:分解解决合并递归情况和基本情况:求解递归式时,可以使用三种方法,a 代入法 b 递归树法 c 主方法最大子数组A[low..high]的任何连续子数组A[i..j]所处的位置必然是以下几个情况之一:完全位于子数组A[low..mid] low<=i<=j<=mid完全位于子数组A[mid..high] midFIND_MAX_CROSSING_SUBARRAY(A, l
2015-03-13 11:31:25
453
原创 线程:避免死锁
线程互斥量pthread_mutex_t 类型初始化一:静态分配,可以设置为常量 PTHREAD_MUTEX_INITIALIZER二:调用 pthread_mutex_init(3)若是动态分配,则需要在释放时调用 pthread_mutex_destroy(3)加锁 / 解锁 pthread_mutex_lock(3) 阻塞至互斥变量解锁
2015-02-03 00:01:36
559
原创 静 忍
静下心来不管将面对什么像个真男人一样战斗坚强执着冷静乐观想起以前和两亮亮打dota,2345号位都能耍的飞起的我,打1号位总是被喷咬咬牙,冷静分析局势,好好补刀,一点点发育起来double killtripple killunstoppablemega killmonster kil
2015-02-02 22:31:36
616
原创 信号知识之abort(3) system(3) sleep(3) POSIX.1实现
abort(3) 使程序异常终止,将SIGABRT信号发送给调用进程(进程不应忽略)ISO C规定,调用它将向主机环境递送一个未成功终止的通知,即调用 raise(SIGABRT)而 raise(3) 等价于:单线程: kill(getpid(), signo);多线程; pthread_kill(pthread_self(), signo);#includ
2015-01-19 21:48:01
1087
原创 volatile和sig_atomic_t
volatile影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,每次使用时都需要去内存里重新读取它的值,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如:volatile int i=10;int j =
2015-01-18 11:50:34
735
原创 进程调度和进程时间
进程调度: 由内核决定:调度策略,调度优先级nice值决定优先级,nice越低优先级越高nice的范围在 [ 0 , 2* NZERO - 1 ]NZERO是系统默认的nice值只有特权进程允许提高调度权限关于NZERO:定义NZERO的头文件因系统而异,除了头文件,Linux3.2 可以通过非标准的sysconf参数 _SC_NZERO 来访问NZERO的值
2015-01-11 15:14:30
827
原创 fork进程控制
完整了解UNIX进程控制是十分重要的。对我们而言,必须熟练掌握的几个函数:fork,exec系列,_exit,wait和waitpidwaitpid可以等待一个特定进程的结束wait相当于: waitpid( -1, &status, 0 );关于fork:如果子进程在父进程之前终止,父进程可以通过wait或者waitpid获得子进程的状态,内核为每个终
2014-12-30 15:12:54
707
原创 杂谈
学习coding如同婴儿学步一样,模仿,尝试,迈步,跌倒,再来。一上来就学习系统的基础知识,效率并不快,很多人倒在了漫长的道路上。其实我们完全可以升华的时候再这么做!don‘t overwhlem trying learn too much试着学太多,及时地学习,最好有项目驱动使用一门技术开始工作:1:如何起步2:这门技术能做什么
2014-12-22 23:04:27
465
原创 标准IO
标准IO都是围绕流进行流的定向决定了单字节还是多字节,最初创建的流没有定向。freopen(3) 清除一个流的定向, fwide(3) 设置流的定向标准IO提供的目的:减少使用read和write的次数,对每个IO流进行自动缓冲管理标准IO提供三种缓冲方式:一:全缓冲所谓冲洗 flush :对标准IO缓冲区的写操作1:在标准IO库方面,f
2014-12-22 22:08:43
509
原创 readdir仿写ls(1)
man 3 readdirman 3 opendir#include #include #include int main(int argc, char *argv[]){ DIR *dp; struct dirent *dirp; if (argc != 2) { fprintf(stdout, "%s", strerr
2014-12-22 21:59:27
485
原创 双向循环链表
使用哨兵(头节点)实现双向循环链表,所谓哨兵(头结点):哑对象,简化边界条件处理。假设在链表L中设置一个对象L.nil ,该对象 代表NIL,但也具有和其他对象相同的各个属性。对于链表代码中出现的每一处对NIL的引用,都替换成L.nil 。这样的调整将一个常规的双向链表变成一个有哨兵的双向循环链表。哨兵位于表头和表尾之间。L.nil.next 指向表头, L.n
2014-12-22 13:10:14
491
原创 队列
循环队列#include #include #define QUEUE_TYPE inttypedef struct QUEUE{ QUEUE_TYPE *head; //pointer start int front; //head int rear; //tail int size;
2014-12-19 00:00:20
415
转载 计算机科学经典著作
以下著作均可在此地址下载: http://www.verycd.com/topics/24717/中文名: 计算机科学经典著作英文名: Computer Science1.The Art of Computer Programming Author: Donald.E.Knuth Web site: http://www-cs-facu
2014-12-18 23:15:52
857
原创 顺序栈 链栈
开始积累并且熟练常用的数据结构和算法,实践实践再实践!!!!!!以前的不足之处在于动手太少,来到一个新的环境,新的挑战,科研要搞,论文要读,代码也一定要坚持写,坚持学习,不断提高自己,少抱怨,多脚踏实地思考实践。虽然自己很菜,虽然项目坑爹,虽然读论文有时候很枯燥很无聊甚至以后根本用不上这些毕竟产业界还是要靠真本事吃饭而不是忽悠两下就能混下去的。没关系,至少我还有
2014-12-18 21:56:57
365
原创 qsort快速排序
非常使用的快速排序算法,不稳定排序#include#include/* * qsort invoke this function */int compare_integers( void const *a, void const *b ){ register int const *pa = a; register int const *pb = b;
2014-12-17 11:22:56
358
xml xsd dtd转换工具,实现xml转换为xsd和dtd文件
2014-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人