06 2020 档案
摘要:异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。 处理异常的关键字 异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。 throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键
阅读全文
摘要:代码实现 代码参考了《数据结构(c++语言版)》--清华大学邓俊辉 "RBTree.h" #pragma once //#include"pch.h" #include<iostream> //宏定义 #define IsRoot(x) ( !((x)->pa) ) #define IsLChild
阅读全文
摘要:搜索树的一种,能保证所有操作在O(log n)的时间内完成,且每次操作全树的拓扑结构更新仅涉及常数个节点的更新。 AVL树能够保证最坏情况下的单次操作时间,但是需在节点中嵌入平衡因子等表示,同时删除操作之后的重平衡操作可能要执行O(log n)次旋转,导致整棵树拓扑结构变化较大;而伸展树虽然实现方便
阅读全文
摘要:AVL树是平衡二叉搜索树中的一种,在渐进意义下,AVL树可以将高度始终控制在O(log n) 以内,以保证每次查找、插入和删除操作均可以在O(log n)的时间内完成。 平衡因子 定义任一结点v的平衡因子(balance factor)为其左右子树的高度差 balfac(v) = height(v-
阅读全文
摘要:与AVL树一样,伸展树(Splay Tree)也是平衡二叉搜索树的一致,伸展树无需时刻都严格保持整棵树的平衡,也不需要对基本的二叉树结点做任何附加改动,能够保持分摊意义下的高效率。 局部性 通常在任意数据结构的生命期内,执行不同操作的概率往往极不均衡,且各操作之间具有极强的关联性,比如数据局部性,所
阅读全文
摘要:存储器结构围绕着局部性:具有良好局部性的程序倾向于访问邻近的数据项集合。 随机访问存储器(Random-Access-Memory) 静态RAM 只要有电就保持不变无需刷新。 读取速度快。 对干扰不敏感。 造价贵,主要用于高速缓存存储器。 动态RAM 对干扰敏感,由于会漏电而需要周期性的刷新。 读取
阅读全文
摘要:物理与虚拟寻址 计算机系统的主存被组织成M个连续的字节大小的单元组成的数组。每个字节都有唯一确定的物理地址。 物理寻址 CPU通过物理地址访问内存,也就是访问主存中的物理地址,访问到实际的物理单元 虚拟寻址 CPU通过生成**虚拟地址(Virtual Address/VA)**来访问主存,CPU上有
阅读全文
摘要:C中变量初始化包括三种方式:默认初始化、直接初始化、拷贝初始化。在C中每个类都定义了对象被初始化的方式,构造函数的任务是初始化类的数据成员,只要类的对象被创造就会执行构造函数。 一个类被创建出来即使什么东西都不定义,编译器也会为我们生成下面的4个函数: 默认构造函数(default construc
阅读全文
摘要:常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 常量指针和指针常量 1. 何为顶层const和底层const 当const修饰指针的时候分为顶层const和底层const,声明指向常量的指针的const是底层const(指向常量的指针,不能通过该指针来改变所指的
阅读全文
摘要:在c++中堆内存的分配与释放是通过new和delete来实现的,new和delete是两个操作符,无需头文件支持 new new运算符 new运算符返回指向所分配类型对象的指针,new运算符首先向系统堆区申请足够的储存空间,如果申请成功,则再调用相应的默认构造函数,然后返回申请空间的地址 new的使
阅读全文
摘要:当运算符被用于类类型的对象时,C++允许我们为其指定新的含义;同时我们也能自定义类类型之间的转换规则。 运算符重载 运算符函数与普通函数相同,唯一的区别时运算符函数的名称为关键字operator + 运算符符号,同时我们不能重载内置类型的运算符,只能重载自定义类的运算符。 我们像调用普通函数一样调用
阅读全文
摘要:inline是C++关键字,在函数声明或定义中,函数返回类型前加上关键字inline,即可以把函数指定为内联函数。 在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间的问题,特别的引入了inline修饰符,表示为内联函数。内联函数实质是在调用点将函数展开,从而减少了对堆栈的操作(在堆栈中调用
阅读全文

浙公网安备 33010602011771号