自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 裴波那契数递归与非递归的实现

斐波那契数通过递归实现的时间复杂度是O(2^n),空间复杂度为O(n);【递归效率低】 非递归迭代实现时时间复杂度为O(n),空间复杂度为O(1);也是最优算法。递归实现:int Fib(size_t n) { if (n < 3) { return n-1; } return Fib(n - 1) + Fib(n - 2); }非递归实现:int

2017-02-26 11:34:33 1757 3

原创 二分查找递归非递归实现并分析

二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑不全边界问题。 用非递归简单分析一下,在编写过程中,如果编写的是以下的代码:#include<iostream> #include<assert.h> using namespace std;int binaty_search(int* arr, si

2017-02-24 20:21:09 1590

原创 有1,2,3,4四个数,能组成多少个互不相同且无重复数字的三位数?都是多少?

有c++简单解决: 在百位、十位、个位分别可以写入1,2,3,4只要三个位置的数字不相同就好。用代码实现:#include<iostream> using namespace std;int main() { int i = 0, j = 0, k = 0, count = 0; for (i = 1; i < 5; i++) { for (j = 1; j

2017-02-23 20:59:20 7361 5

原创 C++智能指针shared_ptr剖析

shared_ptr是c++智能指针中适用场景多,功能实现较多的智能指针。它采取引用计数的方法来实现释放指针所指向的资源。下面是我代码实现的基本功能。template<class T> class sharedptr { public: sharedptr(T* ptr) :_ptr(ptr) , _refCount(new int(1)) {} sharedp

2017-02-23 13:28:39 745 1

原创 C++中智能指针-atuo_ptr、unique_ptr

先引入一个知识点即: RAII(Resource Acquisition Is Initialization) 资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。 智能指针的出现就是为了更好地完成清理工作,最大程度的避免内存泄露等问题,正是资源分配实现的一种方法。智能指针就是自动管理指针所指向的资源的释放

2017-02-22 21:45:51 628 1

原创 C++模板实现双向循环链表(有带头结点)

带头结点的双向循环链表,头结点不存储有效数据,有效数据从头结点的下一个节点存储,代码中既实现了完整版的过程,又完成了简单优化。代码如下: #include #include using namespace std; template struct ListNode { T _data; ListNode* _next; ListNode* _prev; ListNode(const

2017-02-18 21:03:17 965

原创 C++实现多态原理探究

1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。 3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。 4. 多态用虚函数来实现; 5. 纯虚函数是虚函数再加上= 0。 6. 抽象类是指包括至少一个纯虚

2017-02-15 19:50:41 727 1

原创 菱形虚拟继承

菱形继承在C++继承中是一种复杂的继承关系,存在着二义性和数据冗余的问题,而菱形虚拟继承则是为了解决菱形继承所存在的问题。为了探讨菱形虚拟继承如何解决该问题,我先建立个一个较为简单的菱形继承模型。下面分别是菱形继承和菱形虚拟继承的代码实现: //菱形继承 #include #include using namespace std; class AA { public: int _aa; };

2017-02-15 17:15:31 508

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除