一、什么是大端和小端 所谓的大端模式,就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 所谓的小端模式,就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 简单来说:大端——高尾端,小端——低尾端 举个例子,比如数字 0x12 34 56 78在内存中的表示形式为: 1)大端模式: 低地址 -----------------> 高地址 0x12 |
1、Vim本质上是一种多模式的编辑器,其基本上有六种模式,多可达12种模式,今天我来介绍最基本的三种模式。2、常见模式:命令模式 插入模式 底行模式3、三种模式的转换(1)命令模式:yy--复制(n+yy)n行复制 p--粘贴(n+p)n行粘贴 dd--剪贴删除(n+dd) gg--定位到最开始 G--定位到
1、指令(1)ls 显示当前路径下的指定的目录或文件ls -l(ll)//列出文件详细信息 ls -a//显示所有文件或目录(如隐藏目录(Linux中以.开头的文件)) ......指令后可跟选项并且可以随意拼接(2)pwd查看现在所处的路径,其中/是路径分隔符(3)cdcd+路径:切换到指定路径下特殊:cd+~回到家目录 cd+/回到根目录 cd+.当前目录
1、为解决抛异常无法清理资源的问题,c++引入了智能指针2、在C++98中有了auto_ptr但其基本被废弃:int main() { auto_ptr<Date> ap1(new Date); // 拷贝时,管理权限转移,被拷贝悬空 auto_ptr<Date> ap2(ap1); ap1->_year++; return 0; }首先,auto
1、本质:处理错误的一种方式2、在C语言中编译器会通过errno显示错误码,然后perror结合errno显示错误信息:3、在C++中处理异常:(1)throw(程序抛出异常)(2)catch(捕获异常)(3)try(后面跟着多个catch)注:异常必须在try......catch内部才能被捕获double Division(int a, int b) { // 当b == 0时抛出异常 i
1、lambda表达式(本质是匿名函数)格式:[capture_list](parameters)mutable->return_type(statement)[]捕捉列表任何情况下都不能省略对于我们来说lambda是匿名函数,但对于编译器来说其实不是匿名函数为lambda+uuid使用场景:类类型比大小的标准struct Compare1 { bool operator()(const
1、前言:自1998年C++标准问世,C++也在时间的推动下不断发展,其中C++11是2011年C++的一次大的变革,产生了许多新的语法和容器。2、当然变革有好有坏,我们在吐槽它时也要记得它的好的一部分(介绍新内容)(1)列表初始化:C++11中所有容器实现了列表初始化一切皆可用列表初始化,且可以不加赋值符号基于initializer_list实现多个参数初始化:(2)容器的新增:int main
1、前言: 前面我们利用红黑树封装了map(set),其存储的数据一般是有序的,今天我们封装unordered容器,实现无序的unordered_map(set)。2、原理:利用哈希表中的哈希桶实现其底层3、步骤:(1)进一步封装已完成的HashTable,实现KeyOfT来区别map(pair<K,V>)和set(K)传入的数据类型;(2)实现迭代器iterator&nb
1、哈希/散列:值与值间存在映射(一种算法)2、哈希表/散列表:值与数据存储位置建立映射(一种数据结构)3、确定数据位置的方法:(1)直接定址优点:快,无哈希冲突(不同的值计算后得到相同的位置数据)缺点:需要数据范围集中(2)除留余数法(哈希表主流算法)hashi = key % N(N为哈希表的大小)缺点:存在哈希冲突解决办法:a、闭散列:按规则去别的位置储存规则:#线性探测 &nb
目录一. 改造红黑树1. 改变节点的定义,使用更高维度的泛型2. 红黑树追加迭代器的实现1. 红黑树迭代器的构造函数和基本框架2. begin()和end()的实现3. operator*和operator->的实现4. operator++和operator--的实现5. operator!=和operator==的实现3. 对RBTree类进行改变1. 改造insert2. 增加find
1、 红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。 红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。&
1、搜索二叉树可能会出现一边树很长另一边树很短的极端情况,这样的话二叉树就会退化,这时我们就引出了AVL树这样的改良版。AVL树会控制两端树的高度差的绝对值小于1。(一般为右数高度减左树高度)2、AVL树会通过平衡因子来控制,因为是右-左,所以插入左边平衡因子--,右边则++3、基本结构:其中_parent是用来找上一节点进行链接控制AVL的行为:其中除了插入函数其余函数与搜索二叉树相似。4、插入
总的来说set和map是关联式容器,而我们前面学习的vector和list的序列式容器。 set和map底层几乎是搜索二叉树,所以他们都可以进行排序和去重,走的是中序遍历1、set(底层相当于key的搜索树)具体可以看:https://legacy.cplusplus.com/reference/set/set/?kw=seta、插入:b、删除:注:2、mu
1、与普通二叉树不同,二叉搜索树满足左树始终小于根节点,右子树始终大于左子树,对于子树也是一样。2、实现:(1)我们首先要用一个结构体控制树的节点包括节点的值key,左子树与右子树,以及节点的初始构造函数(2)其次我们用一个类封装树的活动:(3)然后我们就可以在public中实现基本的函数:a、查找:按照左<根<右的顺序来进行查找b、插入://插入函数 bool insert(cons
1、多态是指同一行为不同对象会产生不同结果。2、多态形成的条件:(1)虚函数的重写(重写该函数的实现)(2)父类指针或者引用调用该函数a、虚函数:被virtual修饰的函数,父类函数前必须写,派生类不做要求,但建议写上。注:virtual无法修饰静态函数 虚函数重写要做到三同: 函数名参数与返回类型相同&n
1、继承是指函数之间相同性很高时,可以采取从基类(父类)继承相同的部分,形成派生类(子类)。如图:可以将三者相同部分写成一个函数然后分别继承2、继承方式三种:public,private,protected3、总结:1、基类private成员在派生类中无论以什么方式继承均不可见(在类外与类内均不能直接访问);2、基类的私有成员在子类均不可见,基类的其他成员在子类的访问方式取权限小的;public&
1、目的:学习迭代器的封装,提高代码能力。为实现list我们需要在头文件下实现三个大类,进行代码的控制与运行头文件:#include<iostream> using namespace std; #include<assert.h> #include<algorithm> 基本结构:2、list节点控制利用函数模板以针对所有类型3、list功能控制//list类
vector模拟实现
仅个人理解,如有错误及时指出1、定义: 类(class)和对象(o
1、函数重载 函数重载是C++语言中的一个重要特性,它允许使用相同的函数名声明多个函数,只要这些函数的参数不同列表。函数重载与函数的返回值类型无关,即使函数做相同的事情,只是处理的数据类型不同,也可以声明为不同的函数名。函数重载的主要好处包括提高代码的可读性和可维护性,优化代码结构,以及方便用户调用函数。通过使用相同的函数名来表示功能相似但参数不同的函数,可以减少命名冲突,使代码更加清
C++包含c语言的百分之九十的语法,可直接用c语法。C++之父:Bjarne Stroustrup1、首先了解命令域:namespace单独开辟一个空间进行命名,不影响生命周期,用于重复命名的问题:(namespace+命名空间名)rand包含于stdlib头文件,和我们定义的变量重复无法编译;使用namespace调用定义变量就可以避免这些问题。调用方法:空间名::namespace还可以嵌套和
代码实现#define _CRT_SECURE_NO_WARNINGS #include"Seplist.h" //初始化、销毁、打印 void SLInit(SL* ps) { ps->a = NULL; ps->size = ps->capacity = 0; } void SLDestory(SL* ps) { ; } void SLPrint(SL* ps)
1、过程源代码-->可执行程序(xxx.c-->xxx.exe)2、预处理(可在gcc下查看过程)主要进行文本操作,形式如下:xxx.c-E-oxxx.i作用:(1)用于头文件的包含;(2)#include/define xxx指令(3)#define定义符号的替换(4)将注释替换为空格·······3、编译把语言代码翻译成汇编代码形式:xxx.i-->xxx.s(-S)进行实现
1、定义: 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。 磁盘上的⽂件是⽂件。 &nbs
一、指针概括 1、指针定义 Def: 指针(pointer)也就是内存地址(指针==地址),指针变量是用来存放内存地址的变量,在同一CPU下,不同类型的指针变量所占用的存储单元长度是相同的,但所占空间大小由指针变量的类型所决定。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。 一般形式为:类型(int cha
strlen,strcat,strcpy,strstr,strcmp的使用与模拟实现
一、指代不同 1、sizeof:用于获取字符串的长度,是处理字符串的重要工具。 2、strlen:所作的是一个计数器的来工作。 二、规则不同 1、sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要加括弧。 2、strlen:从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结知束符'\0'为止,然后返
今天的练习是移位操作符和赋值操作符:
递归就是让函数中套用自己如下面代码红色部分,像剥洋葱一样让问题大化小(容易思考和实现)。但也存在栈区溢出strckoverflow的问题,与迭代(循环)各有好处。//递归 和 非递归 分别实现求第n个斐波那契数 //例如: //输入:5 输出:5 //输入:10, 输出:55 //输入:2, 输出:1 //递归 int Count(int i) { if (i <= 2) {
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号