随笔分类 -  C++

摘要:编写程序对用户数据进行简单的管理,要求按姓名的字典序对用户信息进行排序。试定义表示用户信息的类person和处理用户信息的类compute实现上述功能。具体要求如下:(1)定义类person,其成员如下:(a)私有成员。char name[10], num[10]:分别保存用户的姓名和电话号码。(2)定义类compute,类compute必须声明为类person的友元类,其成员如下:(a)私有成员。 person pn[3]:表示3个用户。(b)公有成员函数。void setdata():通过键盘输入3个用户的数据。void sort():将数组pn表示的用户信息按姓名的字典序进行排序。voi 阅读全文
posted @ 2013-10-08 02:36 小薇林 阅读(355) 评论(0) 推荐(0)
摘要:1、判断一个单链表中是否有环思路:给定两个指针fast和low都指向头结点,然后low每次前进一步,fast每次前进两步,如果此单链表中有环,那么fast和low一定会相遇,否则fast一定会先遇到null。实现代码如下:bool isCircle(LinkList *head){ LinkList *fast = head;//快指针 LinkList *low = head;//慢指针 while(low->next != NULL && fast->next->next != NULL) { low = low->next; fast ... 阅读全文
posted @ 2013-10-08 02:15 小薇林 阅读(456) 评论(0) 推荐(0)
摘要:编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:classString{ public: String(constchar*str=NULL);//普通构造函数 String(constString&other);//拷贝构造函数 ~String(void);//析构函数 String&operate=(constString&other);//赋值函数 private: char*m_data;//用于保存字符串};解答://普通构造函数String::String(constchar*str){ if(str==NULL) { m_da 阅读全文
posted @ 2013-10-08 01:31 小薇林 阅读(251) 评论(0) 推荐(0)
摘要:strcpy和memcpy的区别strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。void*memcpy(void*dest,constvoid*src,size_tcount);char* strcpy(char* dest, constchar* src) // 阅读全文
posted @ 2013-10-08 01:06 小薇林 阅读(250) 评论(1) 推荐(0)
摘要:考查对基本功的掌握:(1)字符串以'/0'结尾;(2)对数组越界把握的敏感度;(3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案:2分void strcpy( char *strDest, char *strSrc ){ while( (*strDest++ = * strSrc++) != '/0' );}4分void strcpy( char *strDest, const char *strSrc )//将源字符串加const,表明其为输入参数,加2分{ while( (*strDest++ = 阅读全文
posted @ 2013-10-07 21:18 小薇林 阅读(351) 评论(1) 推荐(0)
摘要:一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。设置虚函数须注意:1:只有类的成员函数才能说明为虚函数;2:静态成员函数不能是虚函数;3:内联函数不能为虚函数;4:构造函数不能是虚函数;5:析构函数可以是虚函数,而且通常声明为虚函数。类里面“定义”的成员函数是内联的,但是仍然可以成为虚函数,那么是不是可以说“内联函数不能成为虚函数”这句话有问题呢,是不是应该改成“显式定义的内联函数不能成为虚函数”。比如下面这个示例程序:#include using namespace std;class Base{ public: virtual void f1(){cou... 阅读全文
posted @ 2013-10-07 21:00 小薇林 阅读(2209) 评论(0) 推荐(1)
摘要:摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。vector(向量)——STL中标准而安全的数组。只能在vector 的“前面”增加数据。deque(双端队列double-ended queue)——在功能上和vector相似,但是可以在前后两端向其中添加数据。list(列表)——游标一次只可以移动一步。如果你对链表 阅读全文
posted @ 2013-10-07 20:50 小薇林 阅读(3014) 评论(1) 推荐(0)
摘要:五大内存分区在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化 阅读全文
posted @ 2013-10-07 20:29 小薇林 阅读(301) 评论(0) 推荐(0)
摘要:2012-10-13 21:58:57|分类:其他|字号订阅相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. 而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。因此在这里详细解释一下这两个过程。TCP三次握手所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建 阅读全文
posted @ 2013-10-07 18:05 小薇林 阅读(246) 评论(0) 推荐(0)
摘要:1、内存对齐:http://hi.baidu.com/sxnuwhui/item/bdd8cd9bdffe53d47b7f01a72、MVC与SSH框架对应关系:http://hi.baidu.com/sxnuwhui/item/fafc49730b26a04bef1e53a83、面试相关:http://blog.csdn.net/wfwd/article/details/7636644、非C++内建型别A和B, 在哪几种情况下B能隐式转化为A?// Case 1 : B公有继承自Aclass B : public A{ ...}// Case 2 : B实现了隐式转化为A的转化class B 阅读全文
posted @ 2013-10-07 18:01 小薇林 阅读(325) 评论(0) 推荐(0)
摘要:内存对齐的规则以及作用 首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include 4 5 using namespace std; 6 7 struct st1 8 { 9 char a ;10 int b ;11 short c ;12 };13 14 struct st215 {16 short c ;17 char a ;18 int b ;19 };20 21 int main()22 {23 cout此时CPU先访问一次内存,读取0—3字节的数据进寄存... 阅读全文
posted @ 2013-10-07 17:59 小薇林 阅读(174) 评论(0) 推荐(0)
摘要:1、已知前序中序求后序输入:两个字符串,其长度n均小于等于26。第一行为前序遍历,第二行为中序遍历。二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。输出:输入样例可能有多组,对于每组测试样例,输出一行,为后序遍历的字符串。样例输入:ABCBACFDXEAGXDEFAG样例输出:BCAXEDGAF假设前序遍历为 adbgcefh, 中序遍历为 dgbaechf 前序遍历是先访问根节点,然后再访问子树的,而中序遍历则先访问左子树再访问根节点 那么把前序的 a 取出来,然后查找 a 在中序遍历中的位置就得到 dgb a echf 那么我们就知道 dgb 是左子树 echf 是右子 阅读全文
posted @ 2013-10-06 17:45 小薇林 阅读(426) 评论(0) 推荐(0)
摘要:#include #include const int MAX = 10000+10;int n, m;struct node{int l;int r;int sum;}a[MAX>1;build(l, mid, root>1;if (rmid){ update(l, r, root<<1|1);}else{ update(l, mid, root<<1); update(mid+1, r, root<<1|1);}pushup(root);}int main(){int l, r;while (scanf("%d%d", & 阅读全文
posted @ 2013-10-06 14:58 小薇林 阅读(187) 评论(1) 推荐(0)
摘要:转自深秋的落叶向量(vector)连续存储的元素Vectorc;c.back()传回最后一个数据,不检查这个数据是否存在。c.clear() 移除容器中所有数据。c.empty()判断容器是否为空。c.front() 传回地一个数据。c.pop_back() 删除最后一个数据。c.push_back(elem) 在尾部加入一个数据。c[i]等同于 c.at(i);列表(list)由节点组成的双向链表,每个结点包含着一个元素listlist1(1,2,3)front()返回第一个元素的引用 intnRet =list1.front()// nRet = 1back()返回最后一元素的引用 int 阅读全文
posted @ 2013-10-06 11:14 小薇林 阅读(259) 评论(0) 推荐(0)
摘要:C++ Vector用法深入剖析C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的。在这里我们将会为大家详细介绍一下C++ Vector的相关应用技巧及基本内容,希望能给大家带来一些帮助。(1)vector 标识符 ;(2)vector 标识符(最大容量) ;(3)vector 标识符(最大容量,初始所有值);(4) int i[4] = {12,3,4,5};vectorvi(i,i+2);//得到i索引值为3以后的值;(5)vector > //vi 定义2维的容器;记得一定要有空格,不然会报错vectorline //在使用的时候一定要首先将vi个行 阅读全文
posted @ 2013-10-06 10:10 小薇林 阅读(935) 评论(1) 推荐(1)
摘要:指针和引用的区别一、C++中引用和指针的区别指针初始化的时候,可以指向一个地址,也可以为空。引用必须初始化为另一个变量.int ival = 1024;int *pi = &ival; // a pointerint &rval = ival; // a reference二、估计很多人在编写C++程序都或多或少的会用到pointer 和 reference这两种东西,但是他们两者到底有什么样的区别和联系呢,相信大多数人是不太了解的,今天我就两者的区别和联系从实际程序的角度来加以区别。C/C++中的指针其实就是一个变量,和其他类型的变量是一个样子的,它是一个占用四字节的变量(3 阅读全文
posted @ 2013-10-06 01:34 小薇林 阅读(195) 评论(0) 推荐(0)
摘要:最快速度找到内存泄漏 分类: c++ 2013-01-15 17:20 53人阅读 评论(0) 收藏 举报目录(?)[+]确认是否存在内存泄漏定位内存泄漏由于哪一句话引起的快速找到内存泄漏http://www.builder.com.cn/2008/0115/708177.shtml确认是否存在内存泄漏我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{public: BOOL InitApplication() { int* leak=newint[10]; return TRUE; }};产生 阅读全文
posted @ 2013-03-21 00:50 小薇林 阅读(149) 评论(0) 推荐(0)
摘要:VS不自动提示(自动完成)当vs不自动提示,只有按ctrl+j 出来提示时:到 工具->选项->所有语言-> 阅读全文
posted @ 2013-03-20 23:53 小薇林 阅读(578) 评论(0) 推荐(0)
摘要:[C++基础]039_C++异常处理初级出门+中级进阶概述 今天听了项目组里的C++高手讲C++的异常,受益匪浅。果然,与高手一起才能学习到更多的东西。下面我就把这位高手介绍的C++异常处理分享给园子里的博友们。什么是异常呢? 在编程语言里,按照出现错误的时机来区分,有编译期错误和运行期错误之分。编译期错误大家肯定很熟悉了,当我们build一个程序时,console里出现的那些error提示就是编译期错误。这些错误是在编译期就能被编译器检查出来。运行期错误大家可能不太经常见,因为自己写的程序往往都是在“温室”里运行的,很少看到程序崩溃的情况。运行期错误的种类很多,举个例子,当我们要在堆上申请内 阅读全文
posted @ 2013-03-20 23:39 小薇林 阅读(204) 评论(1) 推荐(0)
摘要:[C++基础]038_联合类型声明位置对其值的影响先看两段代码。片段1: 1 union test{int b; char a[2];} shit; 2 3 int main(){ 4 5 shit.a[0]=10; 6 shit.a[1]=1; 7 cout<<sizeof(test)<<endl; 8 cout<<shit.b<<endl; 9 10 system("pause");11 return 0;12 }输出:4266请按任意键继续. . .片段2: 1 int main(){ 2 union test{int 阅读全文
posted @ 2013-03-20 23:28 小薇林 阅读(198) 评论(0) 推荐(0)