- 博客(10)
- 收藏
- 关注
原创 字符串A中出现B时就用C来代替
这个问题的重点是不使用STLC语言的动态分配内存:malloc(分配的字节大小)free()cstring库中的函数:strlen()strncmp()strncat()strncpy()该算法使用的格外空间大小 O(nAnB)O(\frac{n_A}{n_B}),没有改变p_A,p_B,p_C所指向的值,输出的结果存储在动态分配的内存中。思路:找出A中所有B的开始位置,保存在数组
2017-06-26 20:29:19 749
原创 C++ 赋值运算符函数
类型中的赋值运算符函数的设计需要考虑以下几点:把返回值的类型声明为该类型的引用,并在函数结束前返回实例自身的引用(保证连续赋值)。把传入的参数的类型声明为常量引用(避免调用拷贝构造函数)。在拷贝赋值运算符函数中,如果不改变参数的状态,则设置 const 关键字。释放自身已有的动态分配的内存(防止内存泄露)。如果传入参数和当前实例 *this 是同一个实例,则不进行赋值,直接返回。保证异常安
2017-06-17 21:21:38 326
原创 C++ 单例模式
C++11中,如果一个静态的局部变量正在被初始化,那么并行程序将会等待静态变量初始化完成后再执行。class Singleton {public: ~Singleton() {} Singleton(const Singleton&) = delete; Singleton(Singleton&&) = delete; Singleton& operator=(const Sing
2017-06-17 20:50:16 198
原创 SICP学习小结
我一开始在看CSAPP,刚看完第一章,然后看见知乎上萧井陌发表的关于编程入门的新文章。他的推荐是先掌握一门语言比如Python然后看SICP,接着才是CSAPP。我查了一下发现只有400多页,就打算20天看完这本书,结果一不小心用了40天。虽然是一门入门书,但发现这本书讲的内容真不少。我读第一遍的时候还是想着赶进度,看完一章后对照着SICP解题集做一遍习题。到了第四章后就是单纯得看书了。发现到后面越
2015-04-13 18:57:33 3390
原创 SICP元循环求值器
关于环境的表示和操作 将环境表示为一个框架的表,一个环境的外围环境就是这个表的cdr,空环境则直接用空表表示(define (enclosing-environment env) (cdr env))(define (first-frame env) (car env))(define the-empty-environment '());每个框架都是一对表形成的序对:一个是这一框架中的所有
2015-04-07 17:17:41 540
原创 SICP第三章中表格的实现
一维表格 将这种表格实现为一个记录的表,其中每个记录将实现为由一个关键码和一个关联值组成的序对。 将这种记录连接起来构成一个序对的表,让这些序对的car指针顺序指向各个记录。 为了使表格里加入记录时能有一个可以修改的位置,我们将构造一种带表头单元的表。带表头单元的表在开始处有一个特殊的骨架序对,其中保存着一个哑“记录”。lookup过程从表格里提取信息,以一个关键码为参数,返回与之关联的值或者
2015-04-06 18:37:00 361
原创 SICP第三章学习笔记
第三章 模块化、对象和状态(Modularity, Objects, and State) 当我们需要模拟真实物理系统的程序时,我们可以采用基于被模拟的结构去设计程序的结构,这样,在需要针对系统中的新对象或者新活动扩充对应的计算模型时,能够不必对程序做全面的修改,而只需加入与这些对象或者动作相对应的新的符号对象。也就是说,只需在系统里的一些小局部工作。组织大型程序的方式会受到我们对于被模
2015-04-06 14:55:46 1035
原创 SICP第二章关于哈夫曼编码的代码
《计算机程序的构造与解释sicp》第二章关于哈夫曼编码的代码树叶的构造与选择函数(define (make-leaf symbol weight) (list 'leaf symbol weight))(define (leaf? x) (eq? (car x) 'leaf))(define (symbol-leaf x) (cadr x))(define (symbol-leaf x)
2015-04-03 22:34:06 352
原创 SICP第二章学习笔记
第二章 构造数据抽象(Building Abstractions with Data) 本章主要讲解数据对象的组合,形成复合数据,以及将复合数据对象的使用与该数据对象怎么由更基本的数据对象构造起来的细节隔离开,也就是数据抽象。使用复合数据可以提升在设计程序中所所谓的概念层次,使数据和过程更接近于自然语言,同时提高程序的模块性。当需要修改数据对象的底层实现时并不需要将整个程序重新修改一遍,
2015-04-03 21:39:41 558
原创 SICP第一章学习笔记
这不是简单得教授lisp的方言scheme如何使用的一本书,它以scheme作为工具来介绍模块化和黑盒抽象等一些软件工程方面的知识。本书的在第一章开篇的程序设计的基本元素中提到, 每一种强有力的语言都为此提供了三种机制: 基本表达形式,用于表示语言所关心的最简单的个体 组合的方法,从较简单的东西出发构造出复合的元素 抽象的方法,为
2015-03-31 19:43:06 595
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人