摘要: C++string类常用函数string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字符操作:const char &operator[](int n)const;const char &at(int n)const;char &oper 阅读全文
posted @ 2013-04-08 10:59 夜浪 阅读(140) 评论(0) 推荐(0) 编辑
摘要: #include<iostream>using namespace std;class String{ friend ostream& operator<< (ostream&,String&);public: String(const char* str=NULL); //赋值构造兼默认构造函数(char) String(const String &other); //赋值构造函数(String) String& operator=(const String&other); //operator= String oper 阅读全文
posted @ 2013-04-08 10:15 夜浪 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。【关键字】软中断信号,signal,sigaction,kill,sigqueue,settimer,sigmask,sigprocmask,sigset_t1信号本质软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上 阅读全文
posted @ 2013-04-08 09:51 夜浪 阅读(275) 评论(0) 推荐(0) 编辑
摘要: http协议学习系列 1. 基础概念篇1.1 介绍HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从 阅读全文
posted @ 2013-04-05 12:42 夜浪 阅读(286) 评论(0) 推荐(0) 编辑
摘要: /* 函数:int* MakeSkip(char *, int) 目的:根据坏字符规则做预处理,建立一张坏字符表 参数: ptrn => 模式串P PLen => 模式串P长度 返回: int* - 坏字符表*/int* MakeSkip(char *ptrn, int pLen){ int i; //为建立坏字符表,申请256个int的空间 /*PS:之所以要申请256个,是因为一个字符是8位, 所以字符可能有2的8次方即256种不同情况*/ int *skip = (int*)malloc(256*sizeof(int)); if(skip == NULL) { fprintf 阅读全文
posted @ 2013-04-04 15:44 夜浪 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 一种比KMP和BM更高效的匹配算法(如果想看原英文介绍,看下面分割线后的网址)适用于:模式串较短的情况,最坏时间复杂性为O(N*M),不过一般没这么坏Sunday算法其实思想跟BM算法很相似,只不过Sunday算法是从前往后匹配,在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符。如果该字符没有在匹配串中出现则直接跳过,即移动步长= 匹配串长度+ 1;否则,同BM算法一样其移动步长=匹配串中最右端的该字符到末尾的距离+1。代码如下:/*Sunday-字符串匹配算法--一种优于KMP的算法思想类似于BM算法,只不过是从左向右匹配遇到不匹配的看大串中匹配范围之外的右侧第一个字符在小串中的 阅读全文
posted @ 2013-04-03 20:45 夜浪 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 继续 ~~~~~~~~~一.找错题试题1:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->void test1() { charstring[10]; char* str1 ="0123456789"; strcpy( string, str1 ); }试题2:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHig 阅读全文
posted @ 2013-04-03 19:22 夜浪 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 这些东西有点烦,有点无聊。如果要去C++面试就看看吧。几年前网上搜索的。刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善。1.求下面函数的返回值( 微软)Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制 阅读全文
posted @ 2013-04-03 19:20 夜浪 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 本节用非递归算法来实现快速排序算法,通常非递归算法用栈来实现,本节先介绍使用栈的非递归算法,然后介绍一个不使用栈的非递归算法。1. 使用栈的非递归算法使用栈的非递归算法编码如下。 /** 快速排序算法的使用栈的非递归算法函数 @param SORTTABLE *pTable——排序表指针 @param UINT uStart——表中要排序数据区间的起点,为数组下标 @param UINT uEnd——表中要排序数据区间的终点,为数组下标 @param COMPAREFUNC CompareFunc——数据比较函数 @return void——无 void SortTable_QuickSort 阅读全文
posted @ 2013-04-03 17:49 夜浪 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 《算法导论》中提出的一个解题思路,从数组的左边界开始,由左至右处理,记录到目前为止已经处理过的最大子数组。若已知A[1..j]的最大子数组基于如下性质将解扩展为A[1..j+1]的最大子数组:A[1..j+1]的最大子数组要么是A[1..j]的最大子数组,要么是某个子数组A[i..j+1](1≤i≤j+1)。在已知A[1..j]的最大子数组的情况下,可以在线性时间内找出形如A[i..j+1]的最大子数组。该算法的时间复杂度为因此该算法的时间复杂度为Θ(n)#include <stdio.h> #include <string.h> struct subarray { i 阅读全文
posted @ 2013-04-03 17:24 夜浪 阅读(588) 评论(0) 推荐(0) 编辑