C++
文章平均质量分 94
NEOMc
这个作者很懒,什么都没留下…
展开
-
C++ socket编程基础(理论篇)
对于SOCKET在这里我不想究其历史,我只想说其时它是一种进程通讯的方式,简言之就是调用这个网络库的一些API函数就能实现分布在不同主机的相关进程之间的数据交换. SOCKET中首先我们要理解如下几个定义概念:一是IP地址:IP Address我想很容易理解,就是依照TCP/IP协议分配给本地主机的网络地址,就向两个进程要通讯,任一进程要知道通讯对方的位置转载 2010-04-01 11:18:00 · 1794 阅读 · 0 评论 -
字符串的排列组合问题
转自: http://blog.csdn.net/wuzhekai1985问题1 :输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 思路:这是个递归求解的问题。递归算法有四个特性:(1)必须有可达到的终止条件,否则程序将陷入死循环;(2)子问题在规模上比原问题转载 2012-05-04 09:55:17 · 916 阅读 · 0 评论 -
设计包含min函数的栈,要求函数min、push以及pop的时间复杂度都是O(1)
class Stack{private: struct Link { int data; Link* next; Link(const int& dat, Link* nxt):data(dat), next(nxt){} ~Link(){} } *pHead; Link *pMinimum;public: Stack():pHead(NULL), pMinimum转载 2012-05-04 14:55:09 · 1157 阅读 · 0 评论 -
海量数据处理面试题
转自: http://blog.csdn.net/v_july_v/article/details/66859621. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方转载 2012-05-12 10:33:30 · 716 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / \ 6...转载 2012-05-10 20:47:05 · 648 阅读 · 0 评论 -
中序,后序非递归遍历
//后序: template void postOrder(TreeNode *root) { stack*> st; TreeNode *p = root; TreeNode *pre = NULL;//pre表示最近一次访问的结点 while(p || st.size()!=0) { //沿着左孩子方向走到最左下 。 whi原创 2012-08-17 16:20:35 · 1215 阅读 · 0 评论 -
[classic algo]-heap sort 堆排序
#include using namespace std;#define MAXSIZE 10000int data[MAXSIZE];int heapSize = 0;void heapShift(int i) { int left = i*2+1; int right = i*2+2; int largest = i; if(left < heapS原创 2012-08-17 20:22:42 · 808 阅读 · 0 评论 -
atoi()和itoa()的标准源码实现
microsoft's versionchar* _itoa(int value, char* string, int radix){ char tmp[33]; char* tp = tmp; int i; unsigned v; int sign; char* sp; if (radix > 36 || radix <= 1) { __set_er转载 2012-08-18 00:07:41 · 7713 阅读 · 0 评论 -
二分查找变形
二分查找变形,如{3,5,7,9,11,13,1};这样的数组,这里所说的循环有序数组,就是把一个有序数组从某个(未知)位置处截为两段,把前一段放到后一段的后面(数组里的元素还是有序的,只不过最小值不一定是数组的第一个元素,而可能是其中的任何一项,从它开始逐项递增,到数组的最后一个元素时再回到第一个元素)。显然传统的二分法已经无法直接使用了,但考虑一下,如果已经知道分界点位置,那问题就简单多了转载 2012-08-18 00:43:38 · 1344 阅读 · 0 评论 -
并查集
等价关系与等价类从数学上看,等价类是一个对象(或成员)的集合,在此集合中的所有对象应满足等价关系。若用符号"≡"表示集合上的等价关系,那么对于该集合中的任意对象x,y, z,下列性质成立:1、自反性:x ≡ x2、对称性:若 x ≡ y 则 y ≡ x3、传递性:若 x ≡ y 且 y ≡ z 则 x ≡ z因此,等价关系是集合上的一个自反、对称、传递的关系。通过金属线转载 2012-08-17 20:34:55 · 963 阅读 · 0 评论 -
二叉搜索树删除节点完美版
经测试,现在无bug,欢迎指点。//main.cpp/////////////////////////////////////////////////////题目描述:删除给定二叉排序树的给定节点////作者:k_eckel(韦福如)//时间:2005-09-30//////////////////////////////////////////原创 2012-08-24 13:15:38 · 1219 阅读 · 0 评论 -
面试 智力题
1.你有5瓶药,每个药丸重10克,只有一瓶受到污染的药丸重量发生了变化,每个药丸重9克。给你一个天平,你怎样一次就能测出哪一瓶是受到污染的药呢?答案:调试好天平后,天平左右盘各放两瓶,有下列情况:1:天平平衡,则余下那瓶的是受污染的药;2:天平左倾,则目标瓶在右盘,现在同时从左右盘拿下一瓶,观察到:若天平恢复平衡,则目标瓶就是右盘拿下的那瓶,若天平依旧左倾则目标就是右盘余下的那瓶。转载 2012-09-05 10:20:09 · 8440 阅读 · 0 评论 -
[classic aglo]-quick sort 纯净版
#include#include#include//using namespace std;int partition(int data[], int begin, int end){ int key = data[begin]; while(begin < end) { while(data[end]>=key && begi原创 2012-08-17 11:05:15 · 3118 阅读 · 0 评论 -
boj-1002-A-B Problem 大数加减法
思路:常规大数加减法,要考虑输入数字为负数情况。用字符串存储数字,处理时,逆序字符串补0对齐。主要考虑进位和借位。Problem Id: 2Submit time: 2012-10-01 17:20:42User_id: 478Memory:144K Time:12MSLanguage:G++ Result:Accepted#i原创 2012-10-01 17:34:53 · 2525 阅读 · 0 评论 -
主定理和递归式复杂度分析
主定理和递归式复杂度分析几个约定:文中为了方便,用logn代替log2n.由于文章公式用LaTeX处理,所以不排除出现漏打,错打等情况,如您发现,麻烦通知,thx1.前情提要众所周知,递归是算法的一个重要表现形式,不仅作用大,而且其复杂度的分析也比其他方式要繁杂。但是,如果抛开某些很NB,很强大,很邪恶的递归式不谈,如果不能有效的确定普通转载 2012-10-01 20:38:19 · 6336 阅读 · 0 评论 -
c++面试题-vector手写实现版本
#include#include#include#include#includeusing namespace std;template class myVector{ private: T* data; int len; int size; public: myVector() {原创 2012-09-19 11:26:43 · 3391 阅读 · 0 评论 -
string类自己实现的版本
#include#includeusing namespace std;//templateclass myString{private: char *str;public: myString() { str = new char[1]; str[0] = '\0'; } myString(const char* pStr)原创 2012-09-18 10:47:03 · 953 阅读 · 1 评论 -
判断两棵二叉树是否相等
在这里要对一种情况进行说明当root1的左子树与root2的左子树相同,root1的右子树与root2的右子树相同时,这两颗二叉树相同。当root1的左子树与root2的右子树相同,root1的右子树与root2的左子树相同时,这两颗二叉树同样相同。以下是实现代码bool IsBSTEqual(BNode* root1,BNode* root2){ if (root1转载 2012-05-02 21:13:02 · 12010 阅读 · 1 评论 -
boj-311-小马过河
小马过河Accept:16 Submit:35Time Limit:1000MS Memory Limit:65536KBDescriptioncloverprince养着一只小马,活泼可爱,很喜欢在外面玩。有一天,小马驮着一袋盐从一条小河上经过,到了河对岸,他发现,身上的盐轻了不少,好像自己的力气变大了似原创 2012-03-02 15:38:04 · 1721 阅读 · 0 评论 -
ACM-poj-3295解题报告
ACM-poj-3295 解题报告:本题是一个模拟,构造类型的题。因为只有5个操作数p,q,r,s,t,所以总共只有2的5次方32种组合,可以使用枚举的方法,尝试每个可能的取值。如果某个取值是的其计算结果不是WFF,即可输出not。剩下的就是逻辑运算了。整个输入数据的遍历可以使用栈数据结构,从输入数据的末尾向前遍历,遇到操作数就根据当前模拟值将对应的布尔值压入栈中,遇到K,A,N,C,原创 2012-02-21 17:27:11 · 296 阅读 · 0 评论 -
常用类型转换简记
以下是常用的几种类型互相之间的转换string 转 int..............................char* 转 int #include int atoi(const char *nptr); long atol(const char *nptr); long long atoll(const char *nptr); long lo原创 2010-04-13 16:52:00 · 940 阅读 · 0 评论 -
C/C++文档注释神器——Doxygen常用知识整理(持续更新)
Doxygen是什么Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。对于未归档的源文件,原创 2010-04-14 20:48:00 · 5547 阅读 · 0 评论 -
c++中ertern 用法简记
为什么用EXTERN? 全局变量(外部变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态存储区。有时需要用extern来声明全局变量,以扩展全局变量的作用域。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如原创 2010-04-05 15:42:00 · 1223 阅读 · 0 评论 -
c++ static变量
C++中Static作用和使用方法2008-10-31 12:201、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。2、为什么要引入static? 函数内部定义的变量,在程序执转载 2010-04-05 16:18:00 · 707 阅读 · 0 评论 -
c++ 预定义
预处理器(Preprocessor)定义了读取源代码、对代码预先翻译以及编写供编译器读取的新代码的过程。预处理先于编译器对源代码进行处理。 C/C++语言没有内置工具在编译时间包含其他源文件、宏定义,或根据条件包含或排除一些代码行的编译时指令。预处理器提供了这些能力。虽然当前大多数编译器内部集成了预处理器,人们还是认为预处理独立于编译器的过程。预处理器读取源代码,查找预处理指令语句和宏调用,然后转载 2010-04-20 11:12:00 · 1688 阅读 · 0 评论 -
Socket Programming下IPv6的支持
在IPV6大势所趋下,我们不得不考虑扩展现有的程序,让它也支持ipv6。本篇主要针对socket下ipv4到ipv6的移植相关内容。一、区别之处1)地址结构ipv4地址结构:struct sockaddr_in { short int sin_family; //地址族 unsigned short int sin_port; //端口号 struct原创 2010-04-22 16:07:00 · 1680 阅读 · 2 评论 -
深入分析C++中char * 和char []的区别
问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内 容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码运行结果2293628 4199056 abc2293624 2293624 abc2293620 4199056 abc #include转载 2010-04-25 10:51:00 · 652 阅读 · 0 评论 -
C++多态技术
原文出处:http://www.royaloo.com/articles/articles_2003/PolymorphismInCpp_content.htm导言多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。和纯粹的面向对象程序设计语言不同,C++转载 2010-04-27 10:58:00 · 559 阅读 · 0 评论 -
一些有意思的网站(持续更新)
Marshall P. Cline 著的《C++ FAQs》[Cline 1995]。你看了后一定会赞不绝口 http://www.sunistudio.com/cppfaq/index.html原创 2010-05-01 22:37:00 · 732 阅读 · 0 评论 -
vs2005sp1安装加速
vs2005sp1出来已经有一段时间了,由于安装速度太慢,我一直都没有安装,今天遇到一个vs的bug,不得已需要安装sp1,上网找了一下,发现一个解决安装速度慢的方案。之所以速度慢是很大程度上是因为windows installer的cache造成,在安装时暂时禁用掉windows installer的cache可以极大的加速sp1的安装,而且可以节省1.3G的磁盘空间。将下面的代码存为b原创 2010-05-04 20:45:00 · 674 阅读 · 0 评论 -
RedHat 5 中安装ICE
<br />因为项目要求需要在redhat 5 enterprise版里安装 ICE,下载后想安装c++部分,发现存在依赖。后查证必须按以下顺序安装几个安装包:<br /><br /><br />rpm -ivh db46-4.6.21-2ice.rhel5.i386.rpm<br />rpm -ivh ice-3.3.0-1.rhel5.noarch.rpm<br />rpm -ivh ice-libs-3.3.0-1.rhel5.i386.rpm<br />rpm -ivh ice-utils-3.3.原创 2010-09-16 16:57:00 · 220 阅读 · 1 评论 -
const的思考
1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如: c转载 2011-06-21 10:59:00 · 114 阅读 · 0 评论 -
API设计原则学习笔记
Qt图形界面库的设计在接口API设计中算是十分优秀的,前几天在coolShell上看到了一篇强烈推荐的API设计原则文章,仔细研究了下,文章地址如下: http://developer.qt.nokia.com/wiki/API_Design_Principles简单记录了一下重点和难点,以备忘。High point:Static PolymorphismSimilar c原创 2011-10-24 16:04:22 · 2245 阅读 · 0 评论 -
HeadFirst设计模式学习笔记4-适配器模式&外观模式
适配器模式 适配器模式的核心思想是把被适配者的接口封装起来,然后供客户端调用。类图如图所示:Adapter中组合使用被适配者的对象实例。Target是客户看到的他以为他正在操作的对象类型。Adapter继承于他,所以就对外表现出target类的类型。然后在其内部对真正的实现对象接口封装,让客户对target对象调用的动作执行adaptee的实现。适配器原则的适应场景:想使用原创 2011-10-30 15:21:21 · 1000 阅读 · 0 评论 -
HeadFirst设计模式学习笔记5-模板模式
模板方法 模板方法中,有的方法是由超类实现的,有些方法是由子类处理的。需要子类处理的方法需要声明为抽象方法。 模板方法定义了一个算法的框架,框架里面有一些小的步骤,这些步骤既可以在超类中实现,也可以延迟到子类实现。这样使得子类可以在不影响算法结构情况下修改具体实现。 模板方法应声明为final,以防止子类继承时覆盖。在模板模式中使用钩原创 2011-11-01 10:01:11 · 133 阅读 · 0 评论 -
HeadFirst设计模式学习笔记6-迭代器模式&组合模式
迭代器模式定义:提供了一种方法,可以顺序的访问一个聚合对象内的各个元素,而又不暴露其内部的表示。类图如下:这个模式至少带来了两个好处:1. 采用分离出去的的遍历方式设计可以让遍历从聚合类中解耦,可以实现自己的遍历方式,并且对外提供遍历的统一接口,封闭对内实现方式。2. 聚合对象不再负责维护内部对象集合的遍历方式,这样减少了聚合对象的职责,让聚合类的接口和原创 2011-11-04 15:02:08 · 916 阅读 · 0 评论 -
字符串的全排列和组合算法
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。一、字符串的排列用C++写一个函数, 如 Foo(const char *转载 2012-05-03 22:04:16 · 1471 阅读 · 0 评论