c++
陌亿
这个作者很懒,什么都没留下…
展开
-
哈希表
哈希表1.什么是哈希表:是根据键(Key)而直接访问在内存存储位置的数据结构,也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。它是一种数据结构:并且是在不用进行数据比较的情况下查找数据,时间复杂度为O(1),让数据与其存储的内存空间建立一一对应的关系,时间复杂度为O(1)。2.具体内...原创 2020-04-07 18:26:55 · 297 阅读 · 0 评论 -
什么是类?什么对象?
类和对象(class)是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。【1】.类:具有相同特征和行为/功能的对象的抽象称为类。如:学生所以,对象的抽象是类,类的实例化就是对象,类实际上就是一种数据类型。【2】对象:对象是人们要进行研究的现实世界的实体,它不但可以表示具体的某个东西,还可表示抽象的计划、事件等。对象具有状态,一个对象用数据值来描述它的状态。对象...原创 2019-07-30 15:46:26 · 2102 阅读 · 0 评论 -
结构体内存对齐规则
一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的大小之和。#include <iostream>using namespace std;struct A{ char a; int b; double c;};struct B{ char a; double c; int b;};int main(){ cou...原创 2019-07-31 15:21:39 · 488 阅读 · 0 评论 -
c++初识类和对象
1. 类和对象初步认识类和对象(class)是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象,类就像建房子的图纸,对象就像建造出来的房子。2.类的引入在C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。struct Student{ void SetStudentInfo(const char* name, const...原创 2019-07-31 16:54:28 · 220 阅读 · 0 评论 -
红黑树
红黑树1.定义:红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍倍,因而是接近平衡的。什么是二叉搜索树:二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2...原创 2019-10-31 20:29:28 · 155 阅读 · 0 评论 -
C++中的继承
1.继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。我们中国有句古话:龙生龙,凤生凤,老鼠的儿子会打洞,由此可以看出,儿子继承了父亲的某些行为或特...原创 2019-11-04 22:18:42 · 178 阅读 · 0 评论 -
二叉搜索树
二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树由图可以看出:二叉搜索树最左边的数一定是最小的,最右边的数,一定是最大的。二叉搜索树操作2. 1 二叉搜索树的查找若根节点不为空,1.若根节...原创 2019-11-07 23:32:59 · 192 阅读 · 0 评论 -
多态
1.多态的概念通俗的说:可以说是同一件事物,在不同场景下表现出的不同状态。举个列子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。都是一张车票,但购买的人不同,需要的票价也不同。多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。2. 多态的定义及实现在继承中要构成多态还有两个条件:(前提...原创 2019-11-08 23:06:54 · 124 阅读 · 0 评论 -
AVL树
1. 二叉搜索树的缺陷二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树...原创 2019-11-16 00:14:06 · 136 阅读 · 0 评论 -
宏和函数
宏和函数的区别例:#define Max(a,b) ((a)>(b)?(a):(b))1.宏在预处理阶段会被编译器替换掉,而且宏一般只做简单的文本替换,编译器对其不做任何的语法检测。当编译器在预处理的过程中进行宏替换时,一般进行如下三步:1、在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换;2、替换文本随后被插入到程序中原来文本...原创 2020-02-16 16:13:02 · 449 阅读 · 0 评论 -
引用和指针
指针和引用的定义1.指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;2.引用:引用跟原来的变量实质上是一个东西,只不过是原变量的一个别名而已。int a = 10; int *p = &a;int b = 20; int &rb = b; 上面这一行里面有一个整形变量a和一个指针变量p,p指向a的存储单元,即p的值是a存...原创 2020-02-19 23:07:32 · 160 阅读 · 0 评论 -
c++中函数重载、同名隐藏、函数重写的区别
C++中函数重载、隐藏、重写的区别1.函数重载1.1定义C++规定在同一作用域中,同名函数的形式参数(指参数的个数、类型或者顺序)不同时,构成函数重载。2.1用法例:namespace hello{int add(int a,int b){ return a + b;}double add(double a,double b){ return a + b;}}...原创 2020-02-21 00:12:36 · 425 阅读 · 0 评论 -
初识c++
1. c++关键字(c++)(c++98)中共有63个关键字2.命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。2.1 命名空间的定义定义命名空间,需要使用到namespace关键...原创 2020-02-21 14:20:05 · 98 阅读 · 0 评论 -
new和malloc区别
new和malloc区别1.总体来说:(1)malloc和new都是在堆上开辟内存的,malloc只负责开辟内存,没有初始化功能,需要用户自己初始化;new不但开辟内存,还可以进行初始化,如new int(1);意思是在堆上开辟了一个4字节的int形内存,初始值是1;还有new int[2] ();则表示在堆上开辟了一个包含2个整形元素的数组,初始值都为0。(2)malloc是函数,开辟...原创 2020-02-21 23:10:02 · 1005 阅读 · 0 评论 -
数组和链表的区别
原文地址 http://blog.csdn.net/qq_25806863/article/details/70607204数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点。大致总结一下特点和区别,拿几个人一起去看电影时坐座位为例。数组的特点在内存中,数组是一块连续的区域。 拿上面的看电影来说,这几个人在电影院必须坐在一起。数组需要预留空间,在使用前要先申...原创 2020-02-22 16:50:06 · 338 阅读 · 0 评论 -
static的作用
static的作用1.在C语言中:修饰局部变量:在局部变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:(1) 该变量在全局数据区分配内存。(2)如果不显示初始化,那么将被隐式初始化为0。(3)它始终驻留在全局数据区,直到程序运行结束。(4)其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。(5)改变局部变量的生命周期。...原创 2020-03-17 20:38:05 · 117 阅读 · 0 评论 -
异常
异常1.C语言中传统处理错误的方式终止程序。 缺陷:用户难以接受,像除0错误,就会终止程序。返回错误码。 缺陷: 需要程序员自己去查找相应的错误。像系统很多库的接口函数都是通过把错误码放到errno中,表示错误。C语言中,通过setjmp和gimp组合。2.C++异常异常就是处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误...原创 2020-03-19 15:15:49 · 95 阅读 · 0 评论 -
智能指针
智能指针1. 为什么需要智能指针?1.malloc出来的空间,没有进行释放,存在内存泄漏的问题。2.同样的,new 出来的空间,没有进行释放,也会存在内存泄漏问题。2. 智能指针使用即原理1.原理: 是一种利用对象生命周期来控制程序资源的技术。在对象构造时获取资源,在对象析构时销毁资源。实际上把管理一份资源托付给了对象:- 不需要显示释放资源。- 采用这种方式,对象所需的资...原创 2020-03-19 21:07:57 · 114 阅读 · 0 评论