- 博客(28)
- 收藏
- 关注
原创 C++内存管理
int val;:val(x){}int main()//new对于自定义类型,调用构造函数//delete对于自定义类型,调用析构函数delete n1;delete n2;delete n3;delete n4;return 0;总结:new/delete和malloc/free最大的区别就是new/delete对于自定义类型除了开空间,还会调用构造函数和析构函数,但内置类型几乎是一样的。1.new的原理。
2025-04-22 14:20:23
1020
原创 C++模版
class 类模板名//类内成员定义模板参数只能给当前类模板使用,使用一次,不能多次使用,同理模板参数也不能多次给函数模板使用,比如:public :,_size(0){}~Stack()private:T* _array;//模板不要建议声明和定义分离到两个文件.h和.cpp会出现连接错误,但是可以分离到同一文件void Stack<T>::Push(const T& x)//指定作用域//c++需要手动扩容int main()
2025-04-13 20:58:51
689
原创 string 的介绍及使用
C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。C++中将string封装为单独的类,string 类是 C++ 标准库中的一个非常重要的类,用于表示和操作字符串。
2024-09-24 22:37:21
2123
原创 数据结构【树、二叉树概念】
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,既然保存值域,也要保存结点和结点之间的关系,实际中树有很多种表示方式如:双亲表示法,孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。2、叶子结点或终端结点:度为0的结点称为叶子结点。3、双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点。4、孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点。
2024-09-20 17:41:17
809
原创 C++入门 之 类和对象(下)
1、友元提供了一种突破类访问限定符封装的方式,友元分为:友元函数和友元类,在函数声明或者类声明的前面加friend,并且把友元声明放到一个类的里面、3、用static修饰的成员函数,称之为静态成员函数,但是不能访问非静态的,因为没有this指针。5、友元类中的成员函数都可以是另一个类的友元函数,都可以访问另一个类中的私有和保护成员。6、友元类的关系是单向的,不具有交换性,比如A类是B类的友元,但是B类不是A类的友元。7、友元类关系不能传递,如果A是B的友元,B是C的友元,但是A不是C的友元。
2024-09-20 17:40:50
737
原创 C++入门 之 类和对象(中)
但是像Stack这样的类,虽然也都是内置类型,但是_a指向了资源,编译器自动生成的拷贝构造完成的值拷贝/浅拷贝不符合我们的需求,所以需要我们自己实现深拷贝(对指向的资源也进行拷贝)。11、重载<<和>>时,需要重载为全局函数,因为重载为成员函数,this指针默认抢占了第一个形参位置,第一个形参位置是左侧运算对象,调用时就变成了对象<<cout,不符合使用习惯和可读性、重载为全局函数把ostream/istream放到了第一个形参位置就可以了,第二个形参位置当类类型对象。C++规定,后置++重载时,
2024-09-18 10:18:55
1068
原创 C++入门 之 类和对象(上)
class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束后分号不能省略。类体中内容为类的成员;类中的变量称为类的属性或类成员变量;类中的函数称为类的方法或者成员函数。2、为了区分成员变量,成员变量会加一个特殊标识,如成员变量前面或者后面加_或者m开头,注意C++中这个并不是强制的。3、C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是struct中可以定义函数,一般情况下我们还是推荐用class定义类。
2024-09-15 15:49:15
1022
原创 C++入门基础1
在c/c++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称都存在于全局变量中,可能会导致很多冲突。使用命名变量的空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。c语言项目类似下面这样的命名冲突是普遍存在的问题,c++引入namespcae就是为了更好地解决这样的问题。//域//注意:全局变量int a = 0;int main()//默认访问全局,rand为函数名(地址),用%p打印。
2024-09-15 15:43:56
677
原创 C语言------指针讲解(3)
在指针中,我们知道有一类指针类型为字符指针char*;还有一种使用方式如下:上述代码中,本质是把hello的首字符的地址放到了pstr中。即把一个常量字符串的首字符h的地址存放到指针变量pstr中。其中,%s是格式化,是打印字符串,传入字符串的首地址打印字符串,遇到\0停止。让我们来学习一下下面这道《剑指offer》的题目这里的str3和str4指向的是同一个常量字符串。当几个指针指向同一个字符串的时候,他们实际会指向同一块内存,但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。
2024-07-24 14:30:35
928
原创 python(5)
这里多了一个空行,原因是本来读到的文件内容末尾就有\n,此处使用print来打印,又会自动增加一个换行符。主流的有 GBK 和 UTF8 ,实际开发的实际时候需要保证,文件内容编码的方式和代码中操作文件的编码方式匹配。在有些情况下,会忘记f.close 为了避免这种情况,就使用上下文管理器防止这种情况的发生。其原因是:中文和英文类似,在计算机中,都是使用“数字”来表示字符的。此处,我们使用的办法就是让代码按照utf8的方式进行处理。以上就是文件的关闭操作。如果使用已经关闭的文件,系统则会报异常。
2024-07-24 11:48:25
503
原创 python(4)
1、使用 + 的方法能够把两个列表拼接在一起。使用这种方法,只是针对当前内容生成新的列表,原列表不变。2、使用 extend 进行拼接,这个拼接是将后一个列表的内容拼接到前一个列表里头。extend 也可以用a = a +b ,结果一样,原理不相同。
2024-07-23 11:16:11
270
原创 python(3)
函数的返回值:函数执行到 return 就意味着执行完了。return后面的值,就是函数的返回值,return语句并不是必须的,可以有也可以没有。
2024-07-22 11:18:08
525
原创 C语言------指针讲解(2)
这里我们发现,&arr[0]和&arr[0]+1都相差了4个字节,arr和arr+1相差了4个字节,是因为&arr[0]和arr都是首元素的地址,+1就是跳过一个字节。我们知道,数组是可以传递给函数的,那么第一个问题:我们都是在函数外部计算数组元素的个数,那我们可以把数组传给一个函数后,函数内部求数组的元素个数吗?对二级指针的运算有:*ppa通过对ppa的地址进行解引用,这样找到的是pa,**ppa先通过*ppa找到pa,然后通过对pa解引用,最后找到a。那么在数组传参的时候,传递的是数组名,那么。
2024-07-16 16:31:12
918
1
原创 自定义类型:结构体
位段的声明和结构是类似的,有两个不同:1、位段的成员必须是int、unsigned int 或者signed int2、位段的成员后边有一个冒号和数字struct A//结构体int a;int b;int c;int d;struct B//结构体实现位段int a : 2;//只给了两个比特位,意味着只能存放0,1,2,3,不能存放大于它们的值int b : 5;//同理int c : 10;int d : 30;int main()//16个字节//8个字节。
2024-07-12 15:55:31
1282
原创 数据结构(2)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。顺序表的底层结构是数组,对数组进行的封装,实现了常用的增删改查等接口。
2024-07-12 01:09:06
1080
原创 C语言———指针讲解(1)
我们知道计算机上的CPU(中央处理器)在处理信息的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中。在购买电脑时,电脑内存有等等,那么这些空间又是如何高效管理的呢?其实,计算机会把内存空间划分为一个个的内存单元,。计算机中常见的单位,如下:1个比特位可以存储一个2进制的位1或者0;
2024-07-10 22:34:42
833
原创 python2
具体有如下:if、if......elif、if......elif......else示例:注:上述代码中if条件的两行代码都与条件是否成立有关如果将第二行的缩进取消,则bbbb与条件就无关了,即无论条件是否成立,都会打印bbbb而在c++、java语言中,对于代码缩进没有强制要求。但如果没有好好统一缩进,也会对代码可读性造成影响。上述代码中,都会执行ccc这行代码,只有满足a==1和b==2这个条件时才会打印aaa bbb ccc满足一个条件a==1时,只会打印bbb ccc。
2024-07-10 15:25:24
543
原创 数据结构一
数据结构前言:数据结构是指计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。算法前言:算法就是定义良好的计算过程,简单来说,就是一系列的计算步骤,用来将输入数据转化为输出成果。
2024-07-09 14:05:36
1126
原创 Python1
python中只有int一种整型,表示的范围是“无穷”,因此并没有哦像java、c++这些long之类的类型。对于and操作符来说,如果左侧表达式为False,那么整体的值一定是False,右侧表达式不必求值。对于or操作符来说,如果左侧表达式为True,那么整体的值一定是True,右侧表达式不必求值。此处的f表示“format”,此处就可以使用{}这样的语法,往字符串里嵌入变量或者表达式。,看字母在字母表上的顺序,越靠前,就越小,越靠后,就越大。得到了一个更大的字符串,对于原来的a1 a2没有影响。
2024-07-08 14:09:21
806
原创 C语言----函数(1)
其中,我们的关注度更应该聚焦在自定义函数上,形式如下ret_type fun_name(形式参数)ret_type是函数返回类型,fun_name是函数名,括号中为形式参数,{}起来是函数体。
2024-05-03 14:05:59
1697
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人