
C++
文章平均质量分 81
皓皓松
与坚持梦想者同行!
展开
-
【C++】函数模板
为什么需要函数模板首先,让 我们写一个Add函数int Add(int x,int y){ return x - y;}ok,现在我们要对Add函数进行重载char Add(char x, char y){ return x - y;}我们新定义了一个日期类型Date,我们又得对Date进行重载Date Add(Date& d1, Date &d2){ re原创 2016-11-14 20:23:20 · 453 阅读 · 0 评论 -
【数据结构】栈的队列的实现
今天,再次实现一下数据结构中的栈和队列这次我们用的是C++实现栈和队列,用到了C++多态的一种特性:泛型编程--模板关于模板这个知识点,我们之前讲过,这次就不多说了Stack.h#pragma once#includeusing namespace std;#includetemplateclass Stack{public: Stack() :_p(NUL原创 2016-11-27 16:49:13 · 742 阅读 · 0 评论 -
【数据结构】用栈实现对后缀表达式的计算
首先提一句,我所用的IDE是VS2013。编译器不同,所支持的特性也就不同;现在的C++已经发展到C++11版本,因此VS2008基本就不支持C++11新的特性;我们用后缀表达式,利用数据结构中的栈,进行结果的计算如果是操作数,则压栈如果是操作符,则出栈两个元素,根据操作符进行计算之后再压栈#includeusing namespace std;#include"原创 2016-11-27 17:12:05 · 3788 阅读 · 1 评论 -
【STL】迭代器与List的模拟实现
什么是ListList是STL库(标准模板库)中的一个容器。它的实质上就是一个双向链表,而且要注意的是,这个双向链表是有头的;这样的设计是STL中一个很巧妙的地方,它解决了:(1)插入数据时的判断问题,不用判断链表中有没有数据(2)实现end()函数的时候仅仅只用一个 _head->_prev就可以找到迭代器这里,我们还要介绍另一个概念,迭代器所谓迭代器,就原创 2016-12-22 21:24:07 · 3023 阅读 · 0 评论 -
【数据结构】二叉树的实现
上篇博客中,我们详细说明了树和二叉树的数据结构及其特征,本次,我们用C++来实现一下二叉树定义二叉树节点结构二叉树需要定义指向左孩子和右孩子节点的指针,还有存储的数据;我们在这把它的构造函数也写出来//定义一个二叉树节点templatestruct BinaryTreeNode{ T _data;//数据 BinaryTreeNode *_left;//左孩子 Bina原创 2016-12-27 12:12:40 · 2490 阅读 · 0 评论 -
【C++】二分查找的递归形式和非递归形式
二分查找二分查找,又名折半查找,在有序数组中查找元素的效率很高;缺点就是只能查询有序表,因此适用于不用频繁插入删除的有序表如果没有二分查找,通过遍历来查询表中元素的时间复杂度为O(N)而二分查找时间复杂度为O(lgN)以非递归的形式实现二分查找//二分查找的非递归形式 int BinaryResearchNonR(int *arr,int left, int righ原创 2017-01-04 20:26:34 · 2230 阅读 · 1 评论 -
【数据结构】二叉搜索树
概念及其性质二叉搜索树的查找二叉搜索树的插入二叉搜索树的删除原创 2017-01-20 09:31:45 · 917 阅读 · 0 评论 -
【C语言/C++】关键字
本篇博文旨在分别介绍C语言/C++的关键字;C语言关键字按四大类分,C++关键字按首字母大小排序;主要用于关键字的快速查看,回忆C语言关键字C语言有32个关键字,这些关键字可以分为下面几个类别数据类型关键字 (1)int 整形 (2)char 字符型 (3)float 单精度浮点数 (4)double 双精度浮点 (5)signed 有符号数原创 2017-03-01 13:54:06 · 1106 阅读 · 0 评论 -
【C++】内存管理方式
本篇博文旨在介绍C++的内存管理方式,并和C语言中的内存管理方式作出对比;说明了C语言中的malloc/free和C++中的new/delete的区别C中的内存管理方式堆上创建空间栈上创建空间C语言中常见的几种内存泄漏C++中的内存管理方式全局变量、全局静态变量、局部静态变量、局部变量之间的区别?C语言中的malloc/free和C++中的new/del原创 2017-03-18 22:44:37 · 1493 阅读 · 0 评论 -
【C++】智能指针
本篇博文旨在介绍C++中的智能指针;从为什么引入它开始,分别实现了auto_ptr,scoped_ptr,unique_ptr,shared_ptr等智能指针;介绍了各个智能指针的优缺点以及适用场景;最后用防函数实现了文件指针的管理智能指针概念智能指针是一个类,用它的对象管理着申请的内存空间,并通过作用域、生命周期来保证申请内存的释放,从而防止出现内存泄漏内存泄漏举例//原创 2017-03-15 21:51:06 · 1419 阅读 · 0 评论 -
【面试题】剑指Offer-49-模拟实现atoi()函数
题目概述解题思路就像本篇博文的题目所介绍的那样这道题目就是让模拟实现atoi函数结合库中的atoi函数,我们需要处理的情况有以下几种各种情况分析情况1:正常情况,给的字符串“123”,在正常的范围内情况2:字符串为空情况3:传入的数字为负数情况4:字符串中间有异常字符的情况情况5:字符串越界的情况情况6:字符串开头有空格的情况情况7:字符串开原创 2017-04-22 15:45:44 · 896 阅读 · 0 评论 -
【C++】浅拷贝和深拷贝(String类)
浅拷贝class String{public: String(const char *pStr = "") { if(NULL == pStr) { pstr = new char[1]; *pstr = '\0'; } else { pstr = new char[strlen(pStr)+1];//加1,某位是'\0' strcpy(ps原创 2016-10-19 12:11:01 · 8254 阅读 · 0 评论 -
【数据结构】用回溯法求解迷宫问题
今天呢,让我们来用栈求解一下数据结构中的著名问题---迷宫问题我们先“制造”一个迷宫,把它放在Maze.txt文件中Maze.txt1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 10 0 0 1 1 1 1 1 1 11 1 0 1 0 0 0 0 1 11 1 0 1 0 1 1 0 1 11 1 0 1 1 1 1 1 1 11 1 0 0原创 2016-11-30 11:09:07 · 6712 阅读 · 2 评论 -
【C++】日期类
.原创 2016-11-09 22:10:06 · 433 阅读 · 0 评论 -
【C++】实现容器Vector
容器(Vector)容器是这样的一种数据存储上的【对象类型】,该对象可以持有其他对象或者其他对象的指针。Vector的一些接口我们可以通过【C++Reference】来搜索一下容器我们发现容器里有很多的接口这次我们实现以下接口templateclass Vector{public: Vector(); Vector(const T arr原创 2016-11-09 20:55:02 · 775 阅读 · 0 评论 -
【课设】C++实现万年历
一、万年历要求的功能二、代码块#include #include using namespace std;class date//定义一个日期类 { public: date(int y=1,int m=1,int d=1):year(y),month(m),day(d){}//构造函数 void setyear (int y){year=y;} //改变年份的接原创 2016-06-25 20:23:02 · 9744 阅读 · 14 评论 -
【C++】堆对象
一、什么是堆对象堆对象是指程序在运行过程中可以根据需要随时可以建立或删除的对象又称为动态对象,分为New 和Delete学过数据结构的同学都知道,malloc、free函数那么New就相当于mallocDelete就相当于free二、堆对象的使用(1)New的使用new ()(2)Delete的使用delete 三、堆对象的一个实例代码块:#原创 2016-06-16 21:42:12 · 1770 阅读 · 0 评论 -
【C++】三大特征之多态性(运算符重载)
分析运算符的重载为成员函数和友元函数的不同~重载为友元函数:#include//运算符重载为友元函数 using namespace std;class complex//定义一个复数类 { public: complex(){real=imag=0;}//构造函数 complex(double r,double i){real=r;imag=i;}//构造函数原创 2016-05-28 21:16:18 · 1605 阅读 · 0 评论 -
【C++】子对象基础概念及其用法
一、什么是子对象二、子对象的作用是什么三、利用子对象实现原创 2016-06-16 20:45:49 · 13145 阅读 · 3 评论 -
【C++】类模板(template)作用对比举例
一、类模板类模板是后期C++加入的一种可以大大提高编程效率的方法关键字template用法template class T{ //....} 二、举个栗子我们要写一个比较类,类里面有两个私有成员在类里有求私有成员中的最大值和最小值的两个公有成员用来判断两个数的大小 下面我们来进行有无类模板的比较(1)不用类模板class原创 2016-07-07 15:44:33 · 13966 阅读 · 4 评论 -
【C++】数组类的定义(类模板)
一、为什么要引进类模板减少代码重用。这个概念在C++里有很多二、类模板与模板类(1)类模板的含义类模板的意思是,按不同的方式重复使用相同的代码。一个类模板(也称为类属类或类生成类)允许用户定义为类定义的一种模式,是的类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型包括系统预定义的和用户自定义的原创 2016-06-17 17:36:06 · 27506 阅读 · 0 评论 -
【C/C++】编译和链接
一、编译&链接有没有想过,一个C语言程序是如何转化成一个可执行程序从宏观来讲,这需要两大步骤分别是编译、链接二、编译(1)预编译将#include 包含的头文件进行替换删除注释的代码,并替换为空格将#define 定义的标识符替换(2)编译->编译完成后,生成初版的汇编代码语义分析词义分析语法分析符号汇总(3)汇编生成符号表将汇编指令原创 2016-09-03 17:45:45 · 328 阅读 · 0 评论 -
【C++】构造函数
构造函数是C++中一种特殊的函数,关于C++的书籍上都会讲到但对于初学者可能了解不是很深入,故总结了一下自己的编程经验写了这篇博客希望对初学者有所帮助构造函数概念构造函数是C++中一种特殊的函数,主要用来在【创建】对象时【初始化对象】。构造函数的特点没有【返回值】,名称和【类名】相同class Date{public: //构造函数原创 2016-09-27 15:39:53 · 420 阅读 · 0 评论 -
【C++】内联函数和宏的区别
内联函数//定义特性//内联函数和宏的异同1、类型检测内联函数是函数,有参数类型的判断。宏是直接的替换2、替换时机内联函数在编译的时候替换宏在预处理阶段进行替换3、替换的成功率宏一旦定义则在预处理阶段一定会替换内联函数仅仅是对编译器的一个建议如果编译器觉得该函数不适合成为内联 函数时,便会忽略前面的[ inline ]关键字、4、避免副作用传原创 2016-10-13 18:45:06 · 902 阅读 · 0 评论 -
【C++】继承
继承在C++中,可以利用【继承】来利用已有的一个数据类型来定义一个新的数据类型继承的格式class [子类类名]: [权限] [父类]继承的分类继承分类三类:公有继承,私有继承和保护继承(1)公有继承公有继承中,【基类】中的【公有成员】和【保护成员】在【派生类】中的访问权限不变,【基类】中的【私有成员】也不能被【派生类】所访问class Base/原创 2016-10-24 21:27:33 · 614 阅读 · 0 评论 -
【C++】谈一谈this指针
this指针基本用法class Date{public: void SetDate(int year, int month, int day) { this->year = year; this->month = month; this->day = day; } void PrintDate() { cout<<year<<"-"<<month<<"-"<原创 2016-09-27 14:29:05 · 836 阅读 · 0 评论 -
【转】C++在构造函数中可以调用另一个构造函数吗
原文链接:http://www.cnblogs.com/chio/archive/2007/10/20/931043.html题目如下:问下列代码的打印结果为0吗? #include #include using namespace std; struct CLS { int m_i;转载 2016-10-15 14:09:19 · 2417 阅读 · 0 评论 -
【C++】单例模式之C++实现
单例模式的概念只允许一个产生一个对象的类单例模式的实现方法1.单例类保证全局只有唯一一个自行创建的实例对象2.单例类提供获取这个唯一实例的接口单例模式的优缺点优点(1)阻止其他度对象实例化自己的副本,保证所有访问唯一性(2)类控制了实例化的过程,所以可以灵活的更改实例化的过程缺点(1)每次都需要检查是否对象已经生成,造成些微的开销(2)使用单例对象时,开原创 2017-08-15 11:23:13 · 1308 阅读 · 0 评论