C++学习
菜鸟知识搬运工
在校研究生
展开
-
C++数据结构——array、vector、链表
一、 array模板类 C++中的数组类型是继承了c语言的特性,在使用数组的时候要注意数组越界操作问题。为了更安全的对数组进行操作,C++提出了数组模板类array。array内存空间为连续的一段地址,适用于提前已知所要存储的数据类型和数量、进行大量的查、改操作,不适用于含有大量交换、删除、增加数据的操作,该容器无法动态改变大小,所以说提前已知存储数据类型和数量。1、array模板...原创 2019-03-25 16:51:54 · 5477 阅读 · 0 评论 -
哈希表和红黑树的对比
哈希表 表: 存储数据 key –> value; 用表来存储数据结构的困难:查找困难。一个一个key去比较去查找,效率不高。因此有了Hash算法加快查找。 哈希表(Hash table,也叫散列表),是根据键值(Key)而直接进行访问的数据结构。也就是说,它通过把键值映...转载 2019-06-06 21:48:33 · 18559 阅读 · 1 评论 -
数据结构之树和堆
最优二叉树哈夫曼树是带权路径最小的一种特殊二叉树,所以也称最优二叉树。在这里不讨论基本概念如如何计算路径等,而只着重于树的创建,具体过程让我们举例而言。其基本的原理为:将所有节点一开始都视为森林,每次从森林中选取两个根节点权值最小的树合并为一棵新树,新树的根节点大小为两个子节点大小的和,并将这棵新树重新加入到森林中。如此一来每一轮操作都可以简化为两个基本操作:合并两棵树、插入新树,直到...原创 2019-06-07 20:59:22 · 2021 阅读 · 0 评论 -
各种排序算法的时间复杂度
时间复杂度 当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,在算法分析时,经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。但是我们总是考虑在最坏的情况下的时间复杂度。以保证算法的运行时间不会比它更长。 常见的时间复杂度,...原创 2019-06-04 13:06:31 · 84459 阅读 · 3 评论 -
auto static 的区别
1、static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。2、static变量只赋值一次,以后就不用赋值(但是值是可以改变的,与const常量,具有不可变性。例如:const int Max=100; Max++会产生错误;);而auto变量在函数每调用一次都要赋初值。3、如果用户不对static变量赋初值,则默认为0...原创 2019-07-14 15:23:12 · 4423 阅读 · 0 评论 -
C++ 易混淆的概念-sizeof和strlen、char* 和char[]、*p++和(*p)++
strlen计算字符串的长度,以'\0'为字符串结束标志 strlen()是函数,可以计算字符串的长度,不管是数组还是指针,只要遇到第一个‘\0’就为止,hello字符串是这样的{‘h’, ‘e’,‘l’,‘l’,‘\0’,‘o’}的所以strlen(“hello”) = 4。sizeof是分配的数组实际所占的内存空间大小,计算数据空间的字节数。例如:char *str = "...原创 2019-07-14 16:08:47 · 3159 阅读 · 2 评论 -
C++内存分配方式-堆、栈、自由存储区、全局/静态存储区和常量存储区
一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—,全局...转载 2019-07-22 13:31:17 · 335 阅读 · 0 评论 -
C++中公有继承、保护继承、私有继承
就class之间的关系做一个简单的定义,继承base class的class,base class可以认为class都是自己的子女。1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,...转载 2019-08-03 18:17:44 · 474 阅读 · 0 评论 -
数据结构-图
图的存储结构相对于线性表和树来说更为复杂,因为图中的顶点具有相对概念,没有固定的位置。那我们怎么存储图的数据结构呢?我们知道,图是由(V,E)来表示的,G=(V,E),其中 V表示图结构所有顶点的集合,顶点可以用不同的数字或者字母来表示。E是图结构中所有边的集合,每条边由所连接的两个顶点来表示。图结构中顶点集合V不能为空,必须包含一个顶点,而图结构边集合可以为空,表示没有边。例...原创 2019-08-18 20:42:20 · 1792 阅读 · 0 评论 -
数据结构
一、数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后关系,而与他们在计算机中的存储位置无关。逻辑结构包括:1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;2.线性结构:数据结构中的元素存在一对一的相互关系;3.树形结构:数据结构中的元素存在一对多的相互关系;4.图形结构:数据结构中的元素存在多对多的...原创 2019-08-20 11:06:51 · 550 阅读 · 0 评论 -
static
静态方法是类本身的方法,用类.方法调用,而不是该类的实例1.静态成员函数只属于类本身,随着类的加载而存在,不属于任何对象,是独立存在的静态成员函数不能访问本类中的非静态成员 static成员函数属于类,独立于对象存在,不依赖于对象。静态的特点:随着类的加载而加载,优先于对象存在,被所有对象共享,可以直接被类名调用。非static成员函数属于类,依赖于对象。当没有对象的时候,...原创 2019-08-23 12:46:07 · 1943 阅读 · 0 评论 -
C++ set与map、unordered_map、unordered_set与哈希表
哈希表 表: 存储数据 key –> value; 用表来存储数据结构的困难:查找困难。一个一个key去比较去查找,效率不高。因此有了Hash算法加快查找; 将字符串的key,转成整数,使用整数找到对应的value;Hash算法将字符串转成整数,同样的Hash值的 key:v...原创 2019-06-06 19:43:41 · 19117 阅读 · 12 评论 -
C
1、初始化操作由 case 标签跳过错误代码:switch (CA) { case 1: int high_r = 11; //行 int high_c = 11; //列 int inter = 5; //亮暗区间隔 int mul = 3; //亮暗区倍数关系 shadow_dection(hi...原创 2019-04-13 18:18:17 · 385 阅读 · 0 评论 -
C++头文件和源文件,编译过程
源文件如何根据#include来关联头文件1、系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。#include <xxx.h>2、用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。#include ...原创 2019-04-01 16:07:15 · 39507 阅读 · 15 评论 -
C++队列、堆栈、堆的区别
一、queue模板类 queue队列是一个线性存储表,构成了一个先进先出(FirstInFirstOut) 表。该容器内存结构最好为链式结构,最知名的特点是先进先出,能动态调整大小,适用于包含大量增、删操作的情况,但不适用于含有大量查找操作的数据 队头&队尾:插入一端称为队尾,删除一端称为队首。①队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(fr...原创 2019-03-25 19:55:45 · 2832 阅读 · 0 评论 -
C++ int型与char型辨析
字节也叫Byte,是计算机数据的基本存储单位,一个Byte是由8个bit组成,bit存储内容是0和1,它是最小的可寻址单元 ,1个字节等于8位二进制。1B(Byte)=8b(bit)在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间,一个字节是8位,一个汉字编码两个字节是十六位。英文标点占一个字节,中文标点占两个字节。一个二...原创 2019-03-30 11:07:00 · 2646 阅读 · 0 评论 -
#ifndef#define与namespace杂谈
一、#ifndef#define#endif注意问题:变量一般不要定义在.h文件中。总结:二、#define宏定义三、namespace命名空间一、#ifndef#define#endif首先说明下几点基础知识:1.预编译阶段把所有#include ”***.h“ (“”与<>的区别这里就不说了)用***.h的内容来替换了, 所以之后就没有.h了所有.h...原创 2019-04-04 10:13:21 · 2794 阅读 · 0 评论 -
VS如何在一个项目中添加多个包含main函数的源文件并分别调试运行
在使用VS编辑器学习C、或者C++的时候,很多人都喜欢在一个项目中写多个小程序来调试运行,因为每次新建一个项目都显得比较繁琐。但一个项目中包含多个main函数,项目是无法运行的。这里我在一个项目文件下建了2个C++文件,均含有main()函数:如果需要运行源1.cpp文件,除了运行的那个 源1.cpp文件之外,把其他所有的cpp文件设置为不参与生成就可以了。对于不需要参...原创 2019-02-16 15:34:58 · 63145 阅读 · 43 评论 -
C++字符串的不同存放类型 (string/char[])
C++中,有两种类型的字符串表示形式:C-风格字符串 C++引入的string类C-风格字符串中有大量的函数用来操作以 null 结尾的字符串:1 strcpy(s1,s2) 复制字符串 s2 到字符串 s12 strcat(s1,s2) 连接字符串 s2 到字符串 s1 的末尾3 strlen(s1) 返回字符串 s1 的长度4 strc...原创 2019-03-07 15:47:11 · 7140 阅读 · 2 评论 -
华为2018春招笔试题目 字节流解析与长整数相乘
基础知识杂烩:字节也叫Byte,是计算机数据的基本存储单位,bit存储内容是0和1,bit是计算机中最小的储存单位一个Byte是由8个bit组成,它是最小的可寻址单元 ,1个字节等于8位二进制。1B(Byte)=8b(bit)八个bit可以存储基本的元素 2^8数 例如:abcd1234和各种符号 在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个...原创 2019-03-11 15:14:04 · 931 阅读 · 0 评论 -
VS2015快捷键使用与常见问题
VS代码片段 多行注释选中要 注释的代码段;按Ctrl + K 键;再按Ctrl +C 键。VS代码片段 取消注释选中要 取消注释的代码段;按Ctrl + K 键;再按Ctrl +U 键。vs里的光标变成小方块了: 编辑时会出现覆盖现象,按“Insert”键可以切换回光标。...原创 2019-03-11 20:03:36 · 553 阅读 · 0 评论 -
排序方法总结C++实现
时间复杂度:反映当数据量变化时,操作次数的多少;时间复杂度在评估时,要只保留最高项,并且不要最高项的系数。时间复杂度的大小比较: N!> x^N >...>3^N >2^N > N^x>...>N^3 >N^2>NlogN>N>logN>1空间复杂度:是指算法在计算机内执行时,所需额外开辟的空间。稳...原创 2019-03-18 18:20:27 · 4260 阅读 · 0 评论 -
C++知识点:typedef struct、printf
struct和typedef struct1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu;在声明变量的时候就可:Stu stu1.这...转载 2019-03-19 09:49:49 · 1142 阅读 · 0 评论 -
面向对象的三特性(继承、多态、封装 )Python
继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类python中类的继承分为:单继承和多继承class ParentClass1: #定义父类 passclass ParentClass2: #定义父类 passclass SubClass1(ParentClass1): #单继承,基类是Par...转载 2019-09-02 22:13:44 · 505 阅读 · 0 评论