
C++
文章平均质量分 56
LP9127
这个作者很懒,什么都没留下…
展开
-
this指针
问题的引入 每个对象中的数据成员都分别占有存储空间,如果对同一个类定义了n个对象,则有n个同样大小的空间以存放n个对象中的数据成员,不同的对象调用同一段目标代码,那么问题来了:当不同对象的成员函数引用数据成员的时候,怎么能保证引用的就是所指定的对象成员呢? 为了能更清晰的表达这个问题,引入如下代码来进行说明:#include <iostream>using namespace std;cl原创 2016-09-29 11:25:13 · 621 阅读 · 0 评论 -
继承小结
1、继承的概念 继承就是在已存在的类的基础上建立一个新的类,已存在的类称为“基类”或“父类”,新建的类成为“派生类”或“子类”。继承机制是面向对象程序设计可以重复的最重要的手段,它允许在保持原有类特性的基础上进行扩展,增加功能,呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。例如:声明了一个学生基本数据的类Studentclass Student{public: voi原创 2016-10-25 18:02:48 · 468 阅读 · 0 评论 -
set和map
一、在介绍set和map之前,我们首先来简单了解一下序列式容器和关联式容器 1、序列式容器 序列式容器包括:数组,Vector,list,stack,queue,heap,priority-queue。这些容器存放的内容为value,数据的排放是一种线性结构。 2、关联式容器 关联式容器包括:set,map,multiset,multimap,hashtable,hash_se原创 2017-02-16 12:08:31 · 388 阅读 · 0 评论 -
堆
一、堆的初始化 1、堆的概念 堆实际上是一种完全二叉树,堆可分为大堆和小堆。大堆就是左右孩子的值都小于其父节点的值,根节点的值最大;小堆就是左右孩子的值都小于其父节点的值,根节点的值最小。 2、建堆 第一步:先给出一个数组 第二步:根据该数组,将其构建成完全二叉树的结构 第三步:以这个完全二叉树为基础构造初始堆,从最后一个非叶子节点开始向上调整,这里以小堆为例 这里对以上调整过原创 2017-02-26 16:51:17 · 1403 阅读 · 1 评论 -
让一个类只在堆/栈上创建对象
1、类创建对象的两种方式类创建对象有两种方式,一种是静态创建对象:A a;还有一种方式是动态建立A* pa=new A; 这两种方式是不同的,第一种方式是为对象在栈上开辟空间,另一种方式是为对象在堆上开辟空间。2、如何让一个类只在堆上创建对象?想法一:如果只能在堆上创建对象的话也就意味着不能在栈上创建对象,而我们知道要创建对象必须调用类的构造函数,在这里有很多人就会想到将构造函数设置为私有的,这样原创 2017-08-02 10:55:58 · 692 阅读 · 0 评论 -
链表相交问题
1、判断两个链表是否有交点,假设不带环问题描述:如果两个链表相交,则返回交点,如果不相交,则返回NULL 解题思路一:(1)先求出两个链表的长度l1,l2 (2)求出长度的差值k (3)让较长的链表先走k步,然后两个链表一起向后移动,如果有相等的节点,则说明链表相交 当然还要考虑链表为...原创 2017-07-17 21:14:10 · 442 阅读 · 0 评论 -
求1~n的和
题目描述实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。思路使用递归来解决这个问题代码#include <stdio.h>int add(int n,int& sum){ n && add(n - 1,sum); return sum += n;}int main(){...原创 2017-07-13 13:40:16 · 1119 阅读 · 0 评论 -
合并两个有序链表
描述合并两个有序的单链表,使合并之后的结果仍然有序样例给出 1->3->8->11->15->null,2->null 返回 1->2->3->8->11->15->null代码/** * Definition of ListNode * class ListNode { * publi...原创 2017-07-13 08:46:54 · 197 阅读 · 0 评论