摘要: 【1】资源共享型智能指针实现方式简述资源共享型的智能指针有两种实现方式:一种是侵入式;一种是非侵入式。 网上以及书籍比较常见的是非侵入式的,它的实现完全放在智能指针模板类内。模板类有一个用于保存资源类对象的指针变量和一个用于记录资源对象引用计数的指针变量。 两者是所有的智能指针对象共享的,所以通过指... 阅读全文
posted @ 2013-09-04 00:36 kaizenly 阅读(976) 评论(0) 推荐(0)
摘要: 【1】boost::weak_ptr简介 boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include<boost/weak_ptr.hpp>便可以使用。 【2】boost::weak_ptr详解 智能指针boost::scope_ptr和智能 阅读全文
posted @ 2013-09-02 23:56 kaizenly 阅读(2646) 评论(0) 推荐(0)
摘要: 【1】boost::shared_ptr简介 boost::shared_ptr属于boost库,定义在namespace boost中,包含头文件#include<boost/shared_ptr.hpp>便可以使用。 上篇《智能指针boost::scoped_ptr》中我们看到boost::sc 阅读全文
posted @ 2013-09-01 23:52 kaizenly 阅读(6171) 评论(0) 推荐(1)
摘要: 【1】boost::scoped_ptr简介 boost::scoped_ptr属于boost库,定义在namespace boost中,包含头文件#include <boost/scoped_ptr.hpp>便可以使用。 一句话:一个作用域指针(即所谓智能指针scoped_ptr对象)独享一个动态 阅读全文
posted @ 2013-09-01 14:13 kaizenly 阅读(1834) 评论(0) 推荐(0)
摘要: 【1】为什么函数后面加throw关键字? C++函数后面加关键字throw(something)限制,是对这个函数的异常安全性作出限制。 举例及解释如下: void fun() throw() 表示fun不允许抛出任何异常,即fun是异常安全的。 void fun() throw(...) 表示fu 阅读全文
posted @ 2013-08-31 17:00 kaizenly 阅读(4742) 评论(0) 推荐(2)
摘要: 【1】std::auto_ptr 对于编译器来说,智能指针实质是一个栈对象,而并非指针类型。 智能指针通过构造函数获取堆内存的管理所有权,而在其生命期结束时,再通过析构函数释放由它所管理的堆内存。 所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来 阅读全文
posted @ 2013-08-29 22:13 kaizenly 阅读(1824) 评论(0) 推荐(0)
摘要: 【1】什么是RAII惯用法? RAII是Resource Acquisition Is Initialization的缩写,意为“资源获取即初始化”。 它是C++之父Bjarne Stroustrup提出的设计理念,其核心是把资源和对象的生命周期绑定,对象创建获取资源,对象销毁释放资源。 软件开发中 阅读全文
posted @ 2013-08-28 21:07 kaizenly 阅读(2344) 评论(0) 推荐(1)
摘要: 【1】什么是智能指针? 一句话定义:智能指针是一个行为与指针相同且会自动管理堆内存的模板类对象。 对定义进行简单解析: 1.1 “行为与指针相同”:满足使用起来类似于指针一样的用户体验感 1.2 “会自动管理”:智能之核心体现 1.3 “堆内存”:注意必须是堆内存,这里主要针对栈内存而论。 1.4 阅读全文
posted @ 2013-08-28 09:58 kaizenly 阅读(422) 评论(0) 推荐(0)
摘要: 【1】什么是值语义? 所谓值语义是指目标对象由源对象拷贝生成,且生成后与源对象完全无关,彼此独立存在,改变互不影响。就像 int 类型变量相互拷贝一样。 C++的内置类型(bool/int/double/char)都是值语义,标准库里的 complex<>、pair<>、vector<>、map<> 阅读全文
posted @ 2013-08-27 20:06 kaizenly 阅读(3475) 评论(0) 推荐(0)
摘要: VS2010远程调试环境配置详细讲解: 阅览下文之前,请看相关符号说明: 1. A 代表本地机,即就是研发机 (以下示例为Win764位) 2. B 代表远程机,即就是客户机 (以下示例为WinXp32位) 3. (###) 括号中的内容为命令顺序 【1】具体步骤 (1)在A机上(运行—cmd-ip 阅读全文
posted @ 2013-03-29 21:56 kaizenly 阅读(11242) 评论(2) 推荐(1)
摘要: 编程论到极致,核心非代码,即思想。 所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。 每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。 其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项 思想。 言归正传(呵呵!恢 阅读全文
posted @ 2013-01-21 17:53 kaizenly 阅读(46403) 评论(25) 推荐(16)
摘要: 【1】桶排序 桶排序(也称箱排序),据坊间演绎,其实现方式有很多。 在此我们仅仅阐述一下本文的实现思想,以便于更好的理解下面的内容,同时加深对桶排序的认识。 首先,说明一点,我们是使用数组模拟桶(最好应该是使用链表模拟)。 所谓数组模拟桶实现排序的过程到底是怎么进行的呢?呵呵!其实还真有点抽象。 实 阅读全文
posted @ 2013-01-19 00:20 kaizenly 阅读(3756) 评论(1) 推荐(1)
摘要: 【1】完全二叉树 在学习堆排序之前,我们先要了解一下完全二叉树。 若设二叉树的深度为h,除第h层外,其它各层 (1...h-1) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。 完全二叉树特点: (1) 满二叉树是完全二叉树,完全二叉树不一定是满二叉树。 (2) 在满 阅读全文
posted @ 2013-01-16 20:56 kaizenly 阅读(3096) 评论(0) 推荐(0)
摘要: 【1】选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法 冒泡排序、插入排序、归并排序和基数排序都是稳定的排序算法。 【2】研究排序算法的稳定性有何意义? 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。 再简 阅读全文
posted @ 2013-01-15 14:58 kaizenly 阅读(24339) 评论(4) 推荐(6)
摘要: 【1】归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法也是采用分治法(Divide and Conquer)的一个非常典型的应用。 归并排序的算法复杂度为O(N*logN)。 归并排序算法是稳定的(参见随笔《常用排序算法稳定性分析》)。 【2】归并排序逻辑分析与代码实现 在分析归并排 阅读全文
posted @ 2013-01-14 23:04 kaizenly 阅读(3454) 评论(0) 推荐(0)
摘要: 【1】希尔排序 严格而言,希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。 该方法又称缩小增量(逐渐缩小排序元素相隔差距)排序。 希尔排序是不稳定排序算法(参见随笔《常用排序算法稳定性分析》)。 【2】希尔排序逻辑 希尔排序逻辑分析: (1)先取一个小于N的整数d1作 阅读全文
posted @ 2013-01-14 11:16 kaizenly 阅读(2905) 评论(0) 推荐(1)
摘要: 【1】为什么需要内联函数? 诸位周知,每一种语言的每一种使用规则的存在都有一定的原委,绝不会是凭空而论的。当然,内联函数也同理。 由于内联函数的功能和预处理宏(以下简称宏定义)的功能相似 。所以,先思考我们为什么使用宏定义呢? 因为函数的调用必须要将程序执行的顺序转移到该函数所存放在内存中的某个地址 阅读全文
posted @ 2013-01-12 16:51 kaizenly 阅读(2263) 评论(0) 推荐(0)
摘要: 【1】快速排序 快速排序是由托尼。霍尔(英文名C. A. R. Hoare,英国人,计算机领域爵士,同时是文科生获图灵奖者之一)于1962年提出的一种划分交换排序。 快速排序采用的是一种分治策略。快速排序经典之处在于它的排序思想。 所谓分治就是分而治之,从字面意思即可理解为:复杂问题简单化,简单问题 阅读全文
posted @ 2013-01-11 23:45 kaizenly 阅读(3331) 评论(0) 推荐(1)
摘要: 【1】类型转换诸位周知,类型分为内置数据类型和自定义数据类型(即就是类)。那么,类型转换也就从这两种情况进行讨论。首先,有一个概念的认识:类型转换分为隐式类型转换与显式类型转换。所谓隐身类型转换就是由编译器自己执行转换过程,无需程序员介入。显式类型转换也称为强制类型转换,一般使用名字命名的强制类型转换操作符。【2】隐身类型转换(1)在混合类型的表达式中,其操作数被转换为相同的类型:1 int iVal;2 double dVal;3 iVal >= dVal; //iVal 转换为 double(2)用作条件的表达式被转换为bool类型:1 int iVal;2 if(iVal) //i 阅读全文
posted @ 2013-01-11 11:11 kaizenly 阅读(565) 评论(1) 推荐(0)
摘要: 【1】malloc与free 和 new与delete (1)malloc与free是C语言的标准库函数。new与delete是C++的运算符。它们都可以申请与释放动态内存。 (2)对于非内部数据类型的对象而言,用malloc与free无法满足动态对象的要求(对象在创建的同时要自动执行构造函数,对象 阅读全文
posted @ 2013-01-10 10:38 kaizenly 阅读(3371) 评论(0) 推荐(1)
打赏