- 博客(50)
- 收藏
- 关注
原创 【stack和queue、priority_queue的介绍及使用】
stack和queue、priority_queue的介绍及使用,含容器适配器
2024-08-05 18:55:12
735
原创 C++类和对象中下篇
此时用户再在类外自己实现一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是类的成员函数。3.用于内置类型的操作符,其含义不能改变,例如:内置的整型+,不能改变其含义。C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载,比如想让别人获取到指定的内容。
2024-04-14 22:38:07
1018
原创 C++类和对象中上篇
上述的Date类,在创建完对象后,可以通过Init的public即公有方法给日期设置对象,但如果每次创建对象时都调用该方法设置信息,肯定太麻烦了,那么有没有一个解决办法就是在创建对象时,就将信息设置进去的方法呢。3.若没有显式定义,编译器会生成默认的拷贝构造函数。构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。注意:在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定义类型是调用其拷贝构造函数完成拷贝的。
2024-04-13 12:17:09
712
原创 C++类和对象上
class yang//类体:由成员函数和成员变量组成//一定要注意后面的分号。其中class为定义类的关键字,yang为类的名字,这里要注意一点:类定义结束之后后面分号是不能忽略的。类体中内容称为类的成员,类体就是由成员函数和成员变量组成,类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。//第一中类的定义是声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。public://体重//高度//姓名int _age;
2024-04-10 17:53:32
720
原创 C++入门知识
如果合并的里面有同一个变量怎么办,合并了以后就是同一个域,同一个域里面是不能有同名的,也就是他们准确来说如果这样发生冲突,那他们就不能定义在同一个命名空间。展开命名空间后,即使不指定调用哪一个命名空间里的值,他也不会报错。如果传递了实参,那么这个形参后面的值没什么用,但是如果实参没有传值,那么就会用形参后面的这个值即缺省值。用变量或者函数在编译默认查找时,默认先局部作用域,再全局作用域,这里默认不会到命名空间里面找。命名空间调,比如想调用一个命名空间里面的一个函数多次,那就太麻烦了。缺省参数可以有多个。
2024-03-29 22:22:26
653
原创 OJ:循环队列
改进:当然可以用size来记录链表的长度,从而区分满不满,代入接口,发现找尾不好找,所以我们能不能加一个rear的prev前驱指针从而来找尾,但是好像有点不好控制,如果这样的话,还不如直接双向链表,因此链表看起来虽然简单,但越解决越复杂。我们先来写取对头元素和取队尾元素两个接口吧,首先这两个我们都得先判断他们是否为空,如果为空,就直接跳出循环,取对头元素比较好取,直接用front的下标就能取到,但是对于取队尾元素呢,好像不能直接写,可能得考虑取模的情况,因为可能会遇到下面这种情况。回绕的问题就解决了。
2024-03-06 16:08:51
1163
1
原创 OJ:用栈实现队列
再有了这个之后,我们需要为他开辟空间,从而进行下面的操作,这里使用malloc开辟空间,并且初始化结构体中的两个栈,当然如果你构造的结构体里面是两个指针的话,首先会出现野指针问题,因为指针不赋值的话就是野指针了,还有就是你定义的是指针,你用malloc开辟空间时并没有开辟了空间,反而是开辟了指针。接下来就是pop函数了,还是那句话,就是如果pop有值,就直接删除,倘若没有值,就看左侧,如果左侧有值就移动到右侧,再删除,这段话是不是有点耳熟,跟上面peek函数功能中有些类似,所以借用peek函数。
2024-03-03 17:09:36
427
原创 OJ:反转链表
所以我们采用3个指针来解决,首先n1赋值为null,n2赋值为head,n3为head的next,然后以n2为真为条件进行改变,注意这里oj传的是一级指针,一级指针是不会改变原链表节点的指向的,我们的原链表它肯定是不会改变,只不过在当前的这个oj函数内,此时head它是一个形参,也就是它是一个新的变量,head的指向指到了新的节点,但是对于原链表来说不会改变的。
2024-03-03 12:31:07
422
原创 OJ:链表的中间结点
这里我觉得在声明fast和slow时,容易出错,还有fast&&fast->next时容易出错,首先第一个出错点我觉得在写那个slow时可能会忘记加*,对于while循环判断fast&&fast->next这里呢,这里可能会分不清用与还是或,这里我们想只要有一个条件不满足就直接跳出循环,所以只要有一个为假就跳出循环,所以用与就是&&,如果用或(||)的话,就是得满足两个条件才能跳出循环,还有就是fast和fast->next不能互换位置,否则假如fast为NULL,那么怎么能取到fast->NULL呢。
2024-03-03 11:23:45
386
原创 OJ:移除链表元素
思路:这个题可以直接在原链表上进行修改,但是修改链表的指向是有点麻烦的,所以我们给两个指针,phead和ptail,这是新链表的两个指针,再给一个指针pcur来遍历原链表,如果原链表中不为val就尾插到新链表中,有个细节点要注意的是,就是在为即ptail这个位置上,如果ptail本来就位NULL了,你再一次置为NULL就会报错,但有的测试用例来说,如果原链表中倒数第二个节点不为val,倒数第一个节点为val,这个时候如果你不把新链表的尾的next置为NULL,就会出错。
2024-03-03 10:45:16
399
原创 C遗漏知识(个人向)
C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义#define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。
2024-02-05 15:18:05
4335
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人