摘要: 将插值比例1/2换成其他值实现拉格朗日插值查找 由来:拉格朗日插值公式 数据均匀排布的情况下 一次找到 数据不均匀排布的情况下 找到的次数在一次和二分查找法之间 阅读全文
posted @ 2019-01-08 15:40 lemaden 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 指针悬挂: 问题:使用new申请的内存内存空间无法访问,也无法释放。 原因:直接对指向new申请的存储空间的指针变量进行赋值修改 后果:失去了原来的地址,原来的空间无法访问也无法释放,造成内存泄漏 还可能造成同一个内存释放两次 容易引起指针悬挂的方式:对象的初始化和对象间赋值 容易引起指针悬挂的条件 阅读全文
posted @ 2019-01-08 13:52 lemaden 阅读(266) 评论(0) 推荐(0) 编辑
摘要: memset原型:extern void *memset(void *buffer, int c, int count);用法:#include <string.h>功能:把buffer所指内存区域的前count个字节设置成字符c。说明:返回指向buffer的指针。用来对一段内存空间全部设置为某个字 阅读全文
posted @ 2019-01-08 13:40 lemaden 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 声明了派生类,就可以进一步声明派生类的对象用于解决问题;但是对象在使用之前必须要初始化,而对派生类的初始化就是对该类的数据成员赋值;派生类的数据成员包括三类:基类数据成员,新增数据成员,成员对象数据成员(也叫子对象,或者内嵌对象);由于基类的构造函数并没有被继承下来,所以要完成初始化的工作,就要在派 阅读全文
posted @ 2019-01-08 13:39 lemaden 阅读(347) 评论(0) 推荐(0) 编辑
摘要: C++宏详解代码自动生成-宏带来的奇技淫巧 众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有 一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换), 那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。 阅读全文
posted @ 2019-01-08 13:34 lemaden 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 类的继承与派生派生类的生成过程,实际上是经历了三个步骤:1、吸收基类成员;2、改造基类成员;3、添加基类成员;1、吸收基类成员就是派生类继承从基类过来的所有成员,但是基类的构造函数和析构函数除外;2、改造基类成员包含两个方面:(1)基类成员的访问控制(2)对基类数据或函数成员的覆盖就是说如果派生类中 阅读全文
posted @ 2019-01-08 13:28 lemaden 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 问题一:void GetMemory(char *p){ p=(char*)malloc(100);} void Test(void){ char *str = NULL; //char *str = (char*)malloc(100); //上面一句话改成这句就对了 GetMemory(str) 阅读全文
posted @ 2019-01-08 13:23 lemaden 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 一、指针和数组的对比 1、数组的创建方式:静态存储区或者栈。 数组名 对应 着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的 内容 可以改变。 2、指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。 char *p = "littlesea"; 阅读全文
posted @ 2019-01-08 13:18 lemaden 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要 阅读全文
posted @ 2019-01-08 13:14 lemaden 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 程序的异常处理是使得程序具有一定的容错性,是指允许给运行环境或者人为因素的一些错误的提示或处理。其基本思想:每一个函数要负责发现异常,不必去处理错误,但是需要构造一个异常对象向调用者抛出该异常。该调用者查看异常对象,判断是否能够解决,给用户提示;如果处理不了,则需要继续向更上一级的调用者抛出异常,如 阅读全文
posted @ 2019-01-08 11:36 lemaden 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 1、泛型程序设计:将程序尽可能写的通用,将算法从特定的数据结构中抽象出来,成为通用的;C++模板为泛型程序设计奠定了关键的基础;STL是泛型程序设计的一个范例:容器container、迭代器iterator、算法algorithms和函数对象function object。 2、命名空间namesp 阅读全文
posted @ 2019-01-08 11:35 lemaden 阅读(369) 评论(0) 推荐(0) 编辑
摘要: I/O流的概念 当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象,流是一种抽象,它负责在数据的生产者和数据的消费者之间建立连接,并管理数据的流动。程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作 阅读全文
posted @ 2019-01-08 11:35 lemaden 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 1、函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。 声明方法:template<typename 标识符> 函数声明 求绝对值的模板 #include<iostream> ……编译器从调用abs函数时实参的类型,推导出函数模板的类型参数。using n 阅读全文
posted @ 2019-01-08 11:34 lemaden 阅读(3866) 评论(0) 推荐(0) 编辑
摘要: 多态是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为; 多态的实现:函数重载;运算符重载;虚函数 为什么需要重载运算符? 在C++没有复数运算,进行复数运算之前我们要事先写一个复数类,复数的运算该如何设计?为了实现复数的加减,我们需要重载+、-运算符。 运算符重载的实质:是对已有的运 阅读全文
posted @ 2019-01-08 11:33 lemaden 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 11、用字符数组存储和处理字符串 字符数组的声明和引用 字符串: 字符串常量 “china”,没有字符串变量,用字符数组来存放字符串,字符串以‘\0’结束。 字符串数组的初始化: 逐个输出输入字符串; 将整个字符串一次输入输出; 输出字符不包含\0; 输出字符串时用数组名,遇到\0结束; 输入多个字 阅读全文
posted @ 2019-01-08 11:32 lemaden 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 1、类的继承与派生 保持已有类的特性而构造新类的过程成为继承; 在已有类的基础上新增自己的特性而产生新类的过程称为派生; 被继承的已有类为基类;派生出的新类成为派生类。继承和派生其实是一回事。 继承的目的是实现代码的重用,派生的目的是当新的问题出现的时候,原有的程序不能解决时,需要对原程序进行改造。 阅读全文
posted @ 2019-01-08 11:32 lemaden 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 要实现深拷贝就需要自己编写拷贝构造函数。 深拷贝 #include<iostream> using namespace std; class Point { public: Point() { X=Y=0; cout<<"Default Constructor called."<<endl; } P 阅读全文
posted @ 2019-01-08 11:31 lemaden 阅读(2298) 评论(0) 推荐(0) 编辑
摘要: 动态创建多维数组 new 类型名T[下标表达式1][下标表达式2]…; 如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组,数组元素的个数为除最左边一维外各维下标表达式的乘积。例如: char (*fp)[3];//指向一维数组的指针,即指向一个整个数组,如果指针加1 阅读全文
posted @ 2019-01-08 11:30 lemaden 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 10、深拷贝与浅拷贝 浅拷贝: 实现对象间数据元素的一一对应赋值;(默认构造函数) 深拷贝: 当被复制的对象数据成员是指针类型时,不是复制该指针成员本身,而是将指针所指的对象进行复制。 //浅拷贝 #include<iostream> using namespace std; class Point 阅读全文
posted @ 2019-01-08 11:30 lemaden 阅读(306) 评论(0) 推荐(0) 编辑
摘要: //创建对象数组 #include<iostream> using namespace std; class Point { public: Point() { X=Y=0; cout<<"Default Constructor called."<<endl; } Point(int xx,int 阅读全文
posted @ 2019-01-08 11:29 lemaden 阅读(1798) 评论(0) 推荐(0) 编辑