- 博客(14)
- 收藏
- 关注
原创 C++:继承
上例中的Person类是父类,也叫做基类;student和teacher作为子类,也称作派生类。派生类通过访问限定符修饰的限定方式对父类进行继承。
2024-11-02 16:14:48 913
原创 C++:stack & queue & priority_queue
利用栈完成中缀表达式转后缀:---操作数输出,不动---将操作符依次入栈,通过比较确定其入栈顺序(1)当栈为空时,操作符直接入栈(2)当栈不为空时,比较和栈顶符号的优先级,若优先级高于栈顶符号则直接入栈;若优先级低于或等于栈顶元素,栈顶元素输出,继续比较新的栈顶元素,直到栈为空或遇到优先级低的将其入栈。
2024-10-27 18:22:52 810
原创 C++:List
vector的缺点:vector进行头插或者中间插入时,付出的代价较大,需要挪动数据;vector在扩容时也要在时间和空间上有所消耗。vector的优点:vector支持[ ]索引随机访问某个下标的值,就支持了多种排序算法、二分查找、堆算法等。list的优点:可以直接进行头插尾插任何位置的插入,不用挪动数据;新增节点就直接开辟一个节点的。list的缺点:不支持随即下标访问,查找时要逐个查找,比较麻烦。
2024-10-19 18:12:51 909
原创 C++:vector
但当vector中的元素类型是自定义类型时,以当前的string为例,单纯拷贝空间内容也就是拷贝vector中存的n个string对象,而就是拷贝n个string中的(_str,_capacity,_size);就涉及到了浅拷贝的问题,此时_str指向的空间并没有拷贝,那浅拷贝完之后原空间中的string就会析构,_str指向的空间释放,此时新空间中的string中的_str就会成为野指针,其所指的空间已经释放了,之后再利用该指针对不存在的空间析构或其它操作时程序就崩溃了。
2024-10-15 16:56:11 755
原创 C++:模板
此时的main函数调用swap时此时并不是直接调用函数,模板根据调用的参数推演出函数,这个过程在预编译阶段就发生了,本质是我们写了模板,编译器通过模板推演出类或者函数。----C++在类的对象创建后会自动调用类的构造函数初始化,在进程结束时会调用析构函数销毁。----C++提供了类模板,可以写和类型无关的通用代码,可以存储不同的数据类型。----如果我们想定义存储不同数据类型的栈就要重新定义结构体,操作不便。----C++的封装性使得类外不能随意更改私有的成员变量,更加安全。
2024-09-19 13:18:12 269
原创 C++:内存管理
C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力,而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。申请一个int内存的 空间,并初始化为3.申请一个大小为3的int类型的数组。指向单个对象的指针直接delete。指向数组多个对象的指针用 delete [ ]。C语言中malloc可以申请空间,那我们为什么还要使用new?
2024-09-17 17:22:57 673
原创 数据结构:线性表
需要注意的是,当接口函数只需要调用不需要修改结构体指针即可完成操作时(比如打印单链表)进行传值调用,只需要将定义的结构体指针值传递,函数形参选择结构体指针即可;当接口函数要对实参进行修改(如头插法尾插法),此时要传递创建好的结构体指针的地址,同时接口函数形参用二级指针接收。--指针变量的传值调用与传址调用//存储节点数据//存储下一个节点的地址}SLTNode;//接口函数//打印单链表//尾插法//头插法//尾删法//头删法//查找到可以修改//在pos前插入//在pos后插入。
2024-08-05 17:25:42 1350
原创 数据结构:时间复杂度和空间复杂度
时间复杂度的定义:在计算机科学中,(数学函数表达式),它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有把程序放在机器上运行起来,才能知道。但这就需要把每个算法都进行上机测试,这很麻烦,所有才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,
2024-07-19 20:04:14 1683 4
原创 C语言指针类型详解(建议收藏)
指针是内存中一个最小单元的编号,也就是地址(以字节为单位,每一个字节的存储单位具有一个地址)。指针变量是用来存放内存地址的变量;可以通过取地址符&取出某一变量(字符型、整型、数组类型等)的起始地址存放在指针变量中。经常将指针变量称为指针。注意区分:指针变量的大小即地址的大小取决于计算机是32位还是64位;对于32位的计算机,有32根地址线,在寻址时产生32个0或1;
2024-04-20 23:07:48 1904 2
原创 C语言:浮点数(float)在内存中的存储
中的S、M、E以二进制的形式存储在内存中,如果将一个整型变量以浮点型打印,那么就会把整型存储的二进制补码翻译成浮点型公式打印,整型打印浮点型亦然,这种方法是不可取的,在此之前必须对变量进行强制类型转换。存储 E时:E为一个无符号整型,始终存储一个正整数;为了使E以正整数形式存入,对于8位的E,存储时加上中间数127;事实上,整型变量是将其转换为二进制数存储在内存中,而浮点型是将公式。存储M时:M的形式总是为为1.xxxxxx;:当一个整型变量以浮点型打印,或者一个浮点型变量以整型打印,会发生什么?
2024-04-09 20:20:51 563 1
原创 C语言:数值(int)在char类型下的存储
首先,我们要了解到:在C语言中,char类型变量在内存中存储占1个字节=8个比特位;而数值是以二进制补码的形式在内存中存储(其中,正数:原码=反码=补码;负数: 反码=原码除符号位按位取反、补码=反码+1)。数值有正数和负数之分,存储类型也有有符号(signed 【一般省略】)和无符号(unsigned)之分。char类型变量循环做减法或循环做加法时,会循环-127~128,因为数值是int类型,64比特位;(最高位是符号位:0表示正数、1表示负数)(无符号位,每一位都表示数值)
2024-04-09 16:58:02 631
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人