C++
文章平均质量分 79
Shining-LY
这个作者很懒,什么都没留下…
展开
-
模板和泛型编程
在创建完成抽象操作的函数时,如:拷贝,反转和排序,你必须定义多个版本以便能处理每一种数据类型。以比较两个数的大小为例:#include<iostream>using namespace std;int MAX(int a, int b){ return a > b ? a:b;}double MAX(double a, double b){ ret...原创 2017-10-15 22:01:19 · 176 阅读 · 0 评论 -
求和为sum的连续正序数列
题目描述: 输入一个正数sum,打印出所有和为sum的连续正数序列(至少含有两个数)样例展示: 输入sum=15; 打印出:1+2+3+4+5 、 4+5+6 、 7+8解题思路:用两个数字small和big分别表示序列的最大值和最小值,首先将small初始化为1,big初始化为2.如果从small到big的和大于sum,我们就从序列中去掉较小的值(...原创 2018-08-29 22:54:18 · 522 阅读 · 0 评论 -
将string字符串中的空格替换
在网络编程中,如果URL参数中含有特殊的字符,比如空格,“+”等,往往会被当做特殊意义理解,所以这些特殊字符不能随便使用,但是如果URL参数中确实需要这样的字符,那么就需要对这些字符进行转义,方可继续执行。 例如:将字符串中的每个空格替换成“%20”;“we are happy” 经过替换后变成了“we%20are%20happy”. 下面用两种方法解决这个问题:1、直接调用strin...原创 2018-05-24 13:07:28 · 10771 阅读 · 0 评论 -
STL 一级空间配置器
一、STL介绍STL(Standard Template Library,标准模板库),从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。 首先呢,让我们一起来理解一下STL的六大组件:1、STL六大组件简单介绍(1)容器(Container):作为STL的最主要组成部分--容器,分为序列式容器和关联式...原创 2018-05-27 23:36:58 · 806 阅读 · 0 评论 -
二叉树相关面试题
一、什么是二叉树在计算机科学中,二叉树是每个节点最多有两个子树的树结构,通常子树被称为左子树和右子树,左右子树又是一个二叉树,其次序不能任意颠倒。二、二叉树的相关操作1、二叉树结点的定义二叉树的存储结构一般采用二叉链表的方式,每一个结点都有一个数据域_data和指向左右子树的两个指针域,通过这两个指针域就可以建立二叉树中的上下层关系。下面就是二叉树结点的定义:templ...原创 2018-03-13 21:28:17 · 1185 阅读 · 0 评论 -
数据结构【图】
一、图的基本概念1、图的定义图是由顶点集合及顶点间的关系组成的一组数据结构,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 我们称之为顶点(Vertex),顶点集合有穷非空。在图中,任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的。2、图的分类图按照边的有无方向分为无向图和有向图。无向图由顶点和边组成,有向图由顶...原创 2018-04-26 22:27:36 · 506 阅读 · 1 评论 -
栈的实现及其应用
一、栈1、什么是栈栈(Stack)是一种线性存储结构,它具有如下特点: (1)栈中的数据元素遵守”先进后出”(First In Last Out)的原则,简称FILO结构。 (2)限定只能在栈顶进行插入和删除操作。2、栈的基本操作栈主要有以下几种基本操作: (1)push(): 向栈内压入一个成员; (2)pop(): 从栈顶弹出一个成员; (3)empty(): 如果栈...原创 2018-05-03 21:05:25 · 17819 阅读 · 4 评论 -
堆的简单操作实现
1、堆的基本概念关键码的集合按完全二叉树的顺序存储方式存储在一维数组中,并满足:对于所有节点它的父节点关键码都大于子节点(或都小于它的子节点),这样的堆称为最大堆(或最小堆)。2、堆的特性(1)父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。(2)每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。(3) 当父结点的键值总是大于或等于任何一个子节点的键值...原创 2018-05-03 22:00:36 · 472 阅读 · 0 评论 -
C++实现复数Complex
用C++实现一个简单的复数类,主要涉及四个默认成员函数:(1)构造函数:在定义对象时初始化成员变量,函数名与类名相同,无返回值(void也不能有),对象实例化时系统自动调用(2)拷贝构造函数:是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。(3)析构函数:析构函数并不是删除对象,而是在撤销对象的占用内存之前进行一些清理工作,函数运行结束时自动调用(4)运算符重载:...原创 2017-09-23 21:20:20 · 1142 阅读 · 0 评论 -
【日期类】C++实现
在日常生活中,我们经常会碰到与日期计算相关的问题,模拟实现一个简易的日期类就很方便的解决了一些类似的问题。下面实现的日期类主要包括以下基本的几个操作:(1):days天之后的日期(2):days天之前的日期(3):两个日期之间相差的天数(4):日期的相互赋值首先给出了日期类所包含的函数声明模块:class Date{public: Date(int year = 2017, int mont...原创 2017-09-27 11:53:31 · 660 阅读 · 0 评论 -
【C++继承】之虚拟继承、作用域
一、C++中虚拟继承1、虚拟继承的概念 C++使用虚拟继承,解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一份拷贝,同一个函数名也就只有一个映射。2、解决的问题 解决了数据成员的二义性问题,避免了数据指向不一致问题,同时也节省了内存空间。例如下面这个简单的例子:#i...原创 2017-10-12 19:44:29 · 304 阅读 · 0 评论 -
【C++多态】与虚函数简单总结
多态的概念 所谓多态,其含义就是“多种形式”或“多种状态”。我们把具有继承关系的多个类型称为多态类型,因为我们能使用这些类型的“多种形式”而无须在意他们的差异。在面向对象语言中,接口的多种不同的实现方式即为多态,多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。多态的分类1)静态多态(早绑定):编译...原创 2017-10-14 08:45:10 · 311 阅读 · 0 评论 -
带虚函数的菱形虚拟继承
菱形虚拟继承是单继承和多继承的结合,将类中的函数定义为虚函数。结合实例看看它的实现过程:class Animal{public: virtual void Funtest1() { cout << "Animal::Funtest1()" << endl; } virtual void Funtest2() { cout << "Anima...原创 2017-10-14 22:16:00 · 301 阅读 · 0 评论 -
【引用】详解及指针和引用的区别
1、基本概念 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。2、特性(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进行初始化。(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。(5)声明一个引用,不是新...原创 2018-08-30 15:04:49 · 478 阅读 · 0 评论