- 博客(33)
- 收藏
- 关注
原创 C++学习:模拟priority_queue
开始模拟前咱先了解一下仿函数。有了它,我们就可以自己传个代码让优先级队列升序还是降序,自己模拟时也不用在需要升序降序时改代码。这是个很有用的东西。不写模版也可以,但模版能用在更多地方嘛这里没用class,因为反正都要用的就直接用默认public的struct了。定义时可以看成重载小括号,千万别漏了嗷。接下来用直接像函数一样用就行了,我们来模拟。
2024-09-26 19:10:26 105
原创 7-9 判断一个点是否在园内java
在Main类中编写方法,提示用户输入一个点(x,y),然后检查这个点是否在以原点(0,0)为圆心、半径为r的圆内。方法在圆内,则返回true,否则返回false。
2024-09-26 12:51:11 122
原创 7-6 矩阵转置运算 java
矩阵的转置是矩阵的一种运算,设A为m×n阶矩阵(即m行n列),第i 行j 列的元素是a(i,j),把m×n矩阵A的行换成同序数的列得到一个n×m矩阵,此矩阵叫做A的转置矩阵。在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。
2024-09-25 14:45:25 350
原创 7-7 java定义完数方法 一个数如果恰好等于它的因子(除自身外)之和,这个数就称为“完数“。比如6=1+2+3,因此6是完数。在Main类里面定义一个方法 方法名为isPerfect
一个数如果恰好等于它的因子(除自身外)之和,这个数就称为"完数"。在Main类里面定义一个方法 方法名为isPerfect 返回类型为boolean,该方法要求接收用户输入的一个整数,并判断该整数是否是完数,将判断结果返回,在main函数中 通过键盘输入这个整数,然后调用isPerfect判断这个整数判断是否是完数,如果是输出n:Yes,否则输出n:No ,n是这个具体的数,其中在main方法中调用方法的格式为 : boolean result = isPerfect(n);
2024-09-25 14:44:15 112
原创 C语言:编程计算π的近似值。要求:采用公式p2/6 = 1/12 + 1/22 + 1/32 + … 实现,直到最后一项小于10-12。(定义double类型的变量)
【代码】C语言:编程计算π的近似值。要求:采用公式p2/6 = 1/12 + 1/22 + 1/32 + … 实现,直到最后一项小于10-12。(定义double类型的变量)
2024-09-24 22:09:16 76
原创 C++学习:stack queue模拟
stack和queue可以复用其他容器的函数如deque vector一:stack模拟namespace bit{ template<class T, class Container = deque<T>> class stack { public: void push(const T& x) { _con.push_back(x); } void pop() { _con.pop_back(); } con
2024-09-23 19:48:41 181
原创 C++学习:string的模拟实现
string大家肯定都会用,那么我们来简单实现下string,并非完全重现string,意思到了就好。这次就不用声明定义分离了。实现直接放头文件里了,也方便大家看。
2024-09-07 13:47:20 272
原创 C++学习(八):简单了解new和delete
在c语言中我们常用malloc 、calloc、relloc、free等动态管理内存,C++中我们可以用也推荐用new和delete int* a = new int; // 动态申请一个int类型的空间 int* b = new int[3]; //动态申请3个int类型的空间 int* c = new int(4);//动态申请10个int类型的空间 delete a; delete[] b; delete c;注意:1.匹配使用 new就搭配delete 不要搭配fre
2024-08-18 16:12:53 181 1
原创 C++学习(七):类与对象(四):const成员 初始化列表 static成员 匿名对象
const成员函数:用const修饰成员函数,也就是修饰隐含的this指针,表明该成员函数中不能对任何类的成员进行修改。注意:const对象不可以调用非const成员函数,反之可以。const成员函数内不可以调用其它的非const成员函数,反之可以。
2024-08-15 21:44:58 245
原创 C++学习(六):类和对象(三):拷贝构造函数 运算符重载
默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。4.如果类涉及资源申请,拷贝构造函数一定要写,没涉及的话可以不写。因为涉及资源申请如果浅拷贝会把地址也拷贝了,到时候会自动调用析构,这样就会导致多次析构。二:运算符重载。
2024-08-11 19:22:21 264
原创 C++学习(五):类和对象(二):this指针 构造函数 析构函数
像下面这样的代码函数是如何分辨d1还是d2调用的呢?原因是C++编译器给每个非静态的成员函数增加了一个隐藏的指针参数this,让该指针指向当前对象。this不能在实参和形参显示写,编译器自己会调用,但类里可以显示用。之后我们会在日期类重载时举例用到。this存在哪里?一般在栈帧里面 因为是隐含形参 在vs下在ecx寄存器。
2024-08-09 19:59:33 381
原创 宏的优缺点
3.代码可读性差,也不太好维护,而且写错了还会用错。缺点:1.不方便调试,因为在编译阶段进行了替换。2.没有类型的安全检查。优点:1.提高性能 2.增强了代码的复用性。C++中可以用内联函数换用短小的函数定义。
2024-08-08 17:03:50 95
原创 C++学习(四):类和对象(一)
class 类名{ public: 一般放成员函数 //这里是公有的 类外可以直接被访问private: 一般放成员变量 //这里是私有的 类外不可以直接被访问class是类的关键字,c语言中的struct也可以用,只不过里面全是public的,因为要兼容c语言。定义时可以全部放在类中,也可以声明和定义分离。这里讲分离的class date { //头文件的public:private:int _year;int _month;int _day;
2024-08-08 13:03:00 217
原创 C++(三):内联函数inline ,auto关键字, 空指针nullptr
内联函数inline,C++编译器会在的开销,所以可以。但是,如果内联函数太长比如几十行上百行(不同编译器不同)编译器可以忽视。另外,这是一种的做法,如果展开内联函数,编译阶段就会用函数体替代函数调用,从而使目标。
2024-08-06 21:01:33 161
原创 C++引用与指针的区别
7.sizeof(引用)是引用类型的大小,sizeof(指针)是4或8个字节。2.引用一个实体后不能引用其他实体,指针可以指向任何同类型实体。6.引用+1就是实体+1,指针+1是向后偏移一个类型的大小。5.指针需要解引用,引用编译器会解决。9.没有null引用,有null指针。1.引用必须初始化,指针没事。3.引用没有多级,指针有多级。4.引用使用起来比指针更安全.8.引用是别名,指针存储地址。
2024-08-04 12:22:20 102
原创 C++学习(二):函数重载和引用
引用是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。类型引用变量名对象名) =引用实体;int a = 10;int& b = a;return 0;运行一下就发现地址是一样的。
2024-08-03 12:57:13 271
原创 速通数据结构(八):排序
时间复杂度(最坏):O(N^2) -- 逆序。时间复杂度(最好):O(N) -- 顺序有序。时间复杂度(非精确):O(N的1.3次方)缺陷1:依赖数据范围,适用于范围集中的数组。三个方法都要找key,一般用三数取中法。缺陷2:只能用于整形。
2024-07-29 12:30:20 163
原创 速通数据结构(七):二叉树
本文我们讲二叉树的另一种实现方式:链式。但是实际上,普通二叉树链式存储没有啥意义,用链表也行,真正有用是加点规则变成搜索二叉树红黑树等等,当然这是后话了。先学学基本链式结构吧。
2024-07-24 19:32:06 232
原创 速通数据结构(六):堆
注意:这里的堆是数据结构,不是操作系统中的堆,操作系统中的是管理内存的一块区域分段!三:初始化和销毁四:向上调整算法和向下调整算法五:插入六:删除七:检查空不空和取堆顶元素八:堆大小四:应用一:堆排序二:TopK感谢大家看到这,祝大家共同进步!
2024-07-16 16:32:50 631
原创 速通数据结构(五):队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为出队列:进行删除操作的一端称为。
2024-07-06 23:44:07 243
原创 速通数据结构(四):栈
一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。栈中的数据元素遵守后进先出LIFO)的原则。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。
2024-07-05 14:56:21 150
原创 速通数据结构(三):带头双向循环链表
1.,一般不会单独用来存数据。实际中更多是作为2.,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向 循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而 简单了,后面我们代码实现了就知道了。请往下看。
2024-07-03 22:14:05 217
原创 速通数据结构(二):单链表
我们知道数组是连续的存储空间,优势是可以用下标随意访问,那么这次我们来看链表中的单链表,链表就不是连续的空间了,它的结构大体如下。你要改变什么,就得用它的指针,要改变结构体指针,传结构体的指针的地址,不然形参改变不影响实参啊。找尾节点两种方法都可以用,一个是再标出一个前面的节点,一个直接找next的next,看个人喜好。唯一要注意的是空了就不要再删了,所以要用断言判断一下。第一个就是其中的数据,第二个是结构体指针,是为了链接下一个链表所用的。typedef成什么随你心意,但建议和英文上的靠拢。
2024-06-08 23:25:58 122
原创 速通数据结构(一):顺序表
因为顺序表是连续的,所以头插时数据要挪动位置,注意从前往后还是从后往前挪动,别把数据覆盖了。用typedef自定义可以省去很多麻烦,比如以后顺序表的数据类型要变成double,直接改一处地方就行。注意不能是静态的,空间应该是可以变动的,所以结构体中数据类型是指针,这里也是用malloc。扩2倍是个人喜好,你也可以扩3倍。的空间,可用下标快速访问,类似数组,这是顺序表的结构。这里也可以替换,我保留了原来的代码大家可以看看。assert是断言,出错了就可以让你知道错在哪。聪明的你肯定发现了这可以替换头插尾插。
2024-05-25 10:08:01 122
原创 C++入门
namespace也有多种用法,1上面是指定命名空间访问,2下面讲全局展开。全局展开就像using namespace std一样,你只要using namespace(命名空间的名字),这样就会在这空间里找了。然后会输出8 17 16 14.所以如果你在函数定义中有定义过数字,那么如果调用时你缺省了这个参数,那么参数就会用你定义的那个数字。举个例子,比如开辟空间,你可以定义中给一个数字100,然后这个数让用户来决定,如果不知道开多大的空间,就用你的定义的100,知道的话就用户自己给。
2024-02-05 13:59:51 396 1
原创 为何代码编译无错误却不输出?
2.代码本身逻辑就有问题。这种情况最好让自己代码看的清楚一点,我因为嵌套太多,if for while堆在一起看不出问题。希望大家少出bug,找bug太累了。
2023-10-13 23:14:15 788 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人