按标签归档: C/C++

C++ 智能指针 shared_ptr的实现

dream/ 十月 29, 2018/ C/C++, 数据结构实现/ 0评论

一.实现思路

记录指针的引用计数。每次被复制时,增加计数。每次被赋值时,左侧计数减少,右侧计数增加,同时检查左侧计数是否为0。

从值构造时,new一块空间,并将计数值设置为1。

每次析构时,检查引用计数是否为0,为0则delete构造时new的空间。

默认构造函数可以构造空共享指[……]

阅读全文

各常用排序算法的C++实现及耗时比较

dream/ 十月 28, 2018/ C/C++, 算法及数据结构/ 0评论

一.各算法实现思路

  1. 选择排序:选择出数组中的最小元素,将它与数组的第一个元素交换位置。再从剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。
  2. 冒泡排序:从左到右不断交换相邻逆序的元素,在一轮的循环之后,可以让未排序的最大元素上浮到右[……]

    阅读全文

斐波那契数列的循环算法以及与递归算法的比较

dream/ 十月 9, 2018/ 算法及数据结构/ 0评论

斐波那契数列是一个常用的用于介绍递归算法的入门题目。但是,实际上,它并不适合用递归计算,因为递归会进行大量重复计算(比如计算Fibonacci(10)实际会计算多次8,7…)。当数量增加时,递归方法所需要的时间会成指数递增。

Fibonacci_Recursive为递归算法,时间复杂度为O[……]

阅读全文

makefile模板

dream/ 三月 29, 2018/ C/C++/ 0评论

本文包括项目makefile模板、动态库和静态库makefile模板。

文件结构

.
├── bin
│   └── test.out
├── include
│   └── reply.h
├── lib
│   ├── libreply.a
│   ├── librep[……]

阅读全文