自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 栈和队列-P79-10【2014统考真题】

队列两端均可以入队和出队那么也就是说对头在哪都可以,不一定在两端(严格的说并没有两端,因为是循环队列)

2022-02-11 13:59:18 419

原创 栈和队列-P79-9

队列的最大容量为MaxSize这句话并不是说该队列存满时的元素个数为MaxSize这一种情况是最大容量为MaxSize没有申请其他数据成员判断队列满的条件是Q.front == (Q.rear+1)%MaxSize 解释 通俗的解释,(Q.rear+1)%MaxSize代表在循环队列(rear的值+1) 从图像上看就是当前rear指向的对象的下一位对象%M...

2022-02-11 11:29:16 340

原创 栈和队列-P78-8[2011统考真题]

读题:队列非空时,front指向队头元素,rear指向队尾元素思考:平常的,一般rear指向队尾元素的下一个 那么存储元素就是先将元素存入rear指向的内存, 然后移动rear下一位但是,题目rear指向队尾元素 那么存储元素就是先移动rear至下一位 然后将元素存储至rear所指的空间...

2022-02-11 11:00:30 384

原创 斐波那契数列的对数时间复杂度计算分析(说服你对数时间复杂度是可以算的)+求平方的对数时间分析

先上一下斐波那契的代码class Solution { static final int MOD = 1000000007; public int fib(int n) { if (n < 2) { return n; } int[][] q = {{1, 1}, {1, 0}}; int[][] res = pow(q, n - 1); return res[0][0];

2022-01-31 02:32:32 1705 2

原创 括号匹配问题(有效的括号)[栈图图解]

附上题目力扣最常见的一个方法是使用栈先把使用栈的代码放上去我直接放C++(什么语言不重要)的,后面又图解思路(主要看这个)class Solution {public: bool isValid(string s) { int n = s.size(); if (n % 2 == 1) { return false; } unordered_map<char, char>...

2022-01-29 08:59:09 359

原创 动态数组的几何增长的摊销分析的弊端优化

承接上文动态数组的摊销分析【Python也有数组的类似概念比如list】_DanStevensBigFan-CSDN博客链接里的描述的是当数组存满时,想要继续增加长度的情况但是,有时候如果我们获取数组的长度,里面会出现没有存满的情况(可能时因为删除,或者是就是想先增加数组长度)那么元素的实际数量与数组大小之间不存在正比关系#pragma once#include <iostream>using namespace std; #define InitSize 10 /

2022-01-27 13:57:51 1082

原创 动态数组的摊销分析【Python也有数组的类似概念比如list】

我先说一下数组版的动态数组的摊销分析我先上C++的代码【没有摊销的】吧【应该都能看懂吧】【即使没学过C和C++】#pragma once#include <iostream>using namespace std;#define InitSize 10 //顺序表默认的初始长度typedef struct{ int *data; //指示动态分配数组的指针 int MaxSize; //顺序表的当前的最大容量 int length; //顺序表

2022-01-27 13:21:55 1526

原创 Python的最大递归深度

import sysold = sys.getrecursionlimit()print(old)#1000,可能是个估计值,我不清楚我没查# 报错范围总是比限制要小2(我的电脑上)# 我不知道为什么~~~感兴趣可以查一查sys.setrecursionlimit(1005)def fbnc2(n): if(n<=1): return [1,0] else: [a,b] = fbnc2(n-1) return [a+b,a.

2022-01-26 16:03:42 1448

原创 斐波那契数的好的递归算法和坏的递归算法【python】【代码】【图解】

先看一下坏的def fbnc(n): if n<= 1: return n else: return fbnc(n-2)+fbnc(n-1)print(fbnc(5))print(fbnc(15))print(fbnc(25))print(fbnc(50))那么时间复杂度不难看出是2的(n/2)次方这就是指数级的,当n的数值大的时候就会很慢比如上面的运行结果的fbnc(50)就等了很长时间(看看你的电脑是不是也温度上升了.

2022-01-26 15:50:06 555

原创 Python二分法查找【图解】【代码】

def binary_search(data,target,low,high): # low和high是下标 # num用来统计运行了多少次 global num if(low > high): print("low值大于high值,错误") return False else: # //整除 mid = (low+high)//2 if target == data[mid]:.

2022-01-26 14:56:45 478

原创 返回指向相同元素的下标【正负版本】Python数据结构与算法

def fun(arr,index): if index>=0: return index-len(arr) elif index<0: return index+len(arr)arr=[0,1,2,3]print("arr的长度:",len(arr))print(fun(arr,-1))print("arr[-1]=",arr[-1])print("arr[3]=",arr[3])

2022-01-25 16:26:39 363

原创 不用加减乘除判断一个数的奇偶性【Python数据结构与算法答案】

不用加减乘除为什么呢??不方便??是因为有一个操作的运算效率更高位运算符位运算符的讲解位运算符详解(与,或,非,异或,<<,>>)_mofeigege的博客-CSDN博客_位运算与或非解决标题的代码def is_event(k): # 1的二进制码在计算机中是0b00000001 if k&1==1: # 奇数返回flase return False elif k&1==0: # 偶数返回T

2022-01-25 16:12:47 350

原创 C++向函数传入未知个数的参数,怎么办(非水)

学过python的人应该都知道,这个对于python来说很好实现而且传入未知个数的参数也是比较常见的比如爬虫里面经常出现这个情况但是c++呢???需要用到initializer_list我没拼错哦。。。。。。。之后类似的单词也比较常见,基本都这个长度。。。。。。。。。。。。正文:举个例子,我们要编写一个处理错误信息的函数,目的是能够整齐划一地处理所有错误因为C++有许多类型的错误,所以在调用错误输出函数时传递的参数也不相同为了能编写出可以处理不同实参的函数,早

2022-01-15 14:32:29 1306

原创 C++中怎么给类的成员赋初始值

直接赋值就好了只是有的书没写

2022-01-14 14:03:12 538

原创 Java与C++的this指针与static

C++的static和Java的static的区别_DanStevensBigFan-CSDN博客static的作用与用法_realzuile的博客-CSDN博客_static的作用和用法this几乎没有区别哦C++中this指针的作用以及用法详解_深海一诺-CSDN博客_this指针的作用this指针的使用(1)在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;(2)当参数与函数成员变量名相同时,应使用 this.age = age;表面上看thi

2022-01-14 13:44:21 179

原创 C++对象成员的访问(用指针)

#include <iostream>#include "student.h"using namespace std;int main(){ student* p; // student* p(10,20,"30","40");不能这样用构造方法 p->nnn = 6;//和用普通方法表示一样,指针也不能直接访问私有属性 //运行看结果,没有调用析构函数,那么构造函数呢,我搜了些信息,结论是没调用构造函数 return 0.

2022-01-14 13:02:51 181

原创 C++的修饰符类中的const,mutable

const的作用:令类的对象或类的属性不会被修改当把一个类声明为const时,那么它的所有的成员属性,都自动成为const型但是所有的成员属性都时const会不会太过绝对了,万一里面有我想要修改的呢,如果有一个类,我有99个不想被修改的属性,一个可以修改的属性,难道我要给这99个加上const??当然不用啦,有mutableconst的用法在类里面不能class const student这样用而是在其他地方用,比如const student stu;先放头文件#inc

2022-01-14 12:47:43 63

原创 C++的static和Java的static的区别

不同的是 JAVA对 static 修饰的函数可以不创建对象,直接用类名调用,如:public class Main { public static void main(String[] args) { Test.print(); //here }}class Test{ public static void print() { System.out.print("hello"); }}...

2022-01-14 11:03:27 346

原创 C++的友元函数,友元类及#pragma once的作用

把代码都放最后吧友元函数的作用:可以访问该类的私有属性但在类的外面定义的时候没有”类::“所以该友元函数不属于该类友元函数的意义:C++友元函数_Bussy的博客-CSDN博客_c++友元函数 csdn1、友元存在的意义为什么要有友元函数?友元的存在可以共享数据资源,减小系统的调用开销,提升运行效率。funA想访问B类中的私有成员函数,只需要在B类的声明中加个friend returntype funA(T t);即可。其中friend是友元函数的标识,告诉编译器这是友元函数,

2022-01-14 10:55:31 151

原创 C++静态成员

静态成员使用static修饰的成员,可以修饰属性,函数被static所修饰的成员可以被类任何的对象使用且共享先看一下怎么用static修饰成员值得注意的是,被static修饰的成员要先初始化一下,否则会报错哦#include <iostream>using namespace std;class teach{ private: static int counter; int id; public: te

2022-01-13 19:42:57 55

原创 C++访问类的对象的属性

只能用函数来访问,不能用对象.属性名取赋值和访问

2022-01-13 17:04:47 419

原创 C++初始化类的对象错误,表达式必须具有类类型,但它具有类型 “类名(*)()“

如果时创建类的对象的时候,调用了一个无参构造,那么这时候的括号(主函数的创建类的对象的括号)就不要写啦

2022-01-13 17:01:25 10429

原创 C++创建类的对象失败warning: ISO C++ forbids converting a string constant to ‘char*‘

如果你直接在构造函数的括号里写字符串那么编译器会认为你传了一个string,不是char*解决方法转换类型(char*)这是头文件的里面的构造函数的函数头student::student(int mid,int mage,char* mname,char* mheight)#include <iostream>#include "student.h"using namespace std;int main(){ student stu(10,20,(ch

2022-01-13 16:57:12 872

原创 C++类析构函数什么时候调用

脱离其作用范围,或者释放一个指向类对象的指针比如现在有一串代码一种情况可以复制到编译器,看一下里面的show函数,这个show函数不是析构函数,但传入了一个类的对象,当一个函数调用结束时,释放形参的内存,这个新参正好是类的对象,那么它的作用域就在这个函数之中,当函数调用结束时,自动执行析构函数比如我现在删了主函数的show,那么333333333(作为一个标记)上面就没有执行了析构函数这句话,同理,主函数也是一个函数,只是在主函数里面创建的类的对象不是作为实参传入罢了,这个类的对象的作用

2022-01-13 16:25:27 630

原创 构造函数、析构函数频繁调用为什么不内联

什么时候用内联:短小而且反复调用的函数进行内联就可以了。构造函数、析构函数频繁调用而且代码也几乎没写什么,为什么不内联呢?是的,从代码上看,确实代码量很小,几乎没有先来看构造函数和析构函数,参阅Effective C++得知,将构造函数和析构函数声明为inline是没有什么意义的,即编译器并不真正对声明为inline的构造和析构函数内联,因为编译器会在构造和析构函数中添加额外的操作(申请/释放内存,构造/析构对象等),致使构造函数/析构函数并不像看上去的那么精简。注意:有额外操作

2022-01-13 15:51:18 116

原创 C++文件读取

我先分享几个我自认为很高质量的文章的链接c++文件读写操作C++文件读写详解(ofstream,ifstream,fstream)

2022-01-09 17:40:01 110

原创 C++的文件操作open与close

先看一下相应的打开文件的不同参数的作用C++ open 打开文件(含打开模式一览表)打开模式可以用多个,但符号是|,不是&,注意啦比如ios::in | ios::binary表示用二进制模式,以读取的方式打开文件。 ios::out | ios::binary表示用二进制模式,以写入的方式打开文件。void open(const char* szFileName, int mode)第一个参数是指向文件名的指针,第二个参数是文件的打开模式标记。有的书可能书的出版时间比较

2022-01-09 14:42:30 2649

原创 C++的typedef之——将函数作为参数——的运用

这是接上一篇文章写的C++函数——将函数作为参数传入函数(将函数作为的参数删了就不行的一篇文章)(非水文)观察一下函数这样写是不是有点复杂void num(int a,int b,int(* p)(int,int))int(* p)(int,int)这里是不是挺复杂的,也不好看对吧那么这时候typedef的作用就又出来啦#include <iostream>using namespace std;typedef int(* Ptr)(int,int);//这样用

2022-01-07 15:13:49 341

原创 C++函数——将函数作为参数传入函数(将函数作为的参数删了就不行的一篇文章)(非水文)

将函数作为参数,可以少写代码,提高复用率大家可以这样想,我要实现一个函数的作用可以加两个数字,也可以减两个数字,那么这个时候可以在这样(先不将函数作为参数)你们会这样吗?int math(int a,int b,char ch){ switch (ch) { case '+': return a+b; break; case '-': return a-b; break; }}好

2022-01-07 14:49:06 630

原创 C++函数指针

这块的内容一定要写明白什么是返回值才好理解先看一下指向函数的指针的定义格式(格式就长成这样,要去领悟一下。。。)#include <iostream>using namespace std;int abc(int& a){ return a*a;}int main(){ int n = 5; // //方法一 // //指向函数的指针 // int(* p)(int&); // //注意* 和 p 要用括号

2022-01-07 11:50:03 151

原创 C++常量指针常量,常量引用常量,指针常量,引用常量,常量指针,常量引用

#include <iostream>using namespace std;int main(){ int n = 6; //常量指针常量 const int* const p = &n; // p = NULL;//报错 // *p = 5;//报错 //常量引用常量 const double &c = n; //c = 5;//报错 //指针常量 int* const p2 =.

2022-01-06 17:30:31 50

原创 C++智能指针

先来看一下不用智能指针的结果这个图片来自C++ 智能指针--内存泄露的惨痛经历我的理解是有一个函数有创建指针的作用,比如里面有malloc,new之类的,但是没有free和delete,那么函数每调用一次,就会占一些内存,这样不好,就会上面这样,运行内存的空间几乎被占满了下面是内存泄漏的一些例子c语言内存泄露示例...

2022-01-06 16:27:42 36

原创 C++的指针的命名规范

1)用(p或ptr)加上(英文单词(单词首字母大写))来表示一个指针2)用(p或ptr)加上(英文单词(单词小写))来表示一个指针【不推荐】3)用(p或ptr)加上 ' _ '再加上(英文单词(单词首字母大写))来表示一个指针...

2022-01-02 22:01:27 1683

原创 C++的标准库的函数,begin,end

//int arr[] = {0,1,2,3,4};//int* b = begin(arr);//获取数组的首地址//int* e = end(arr);//获取数组的最后一个元素的下一位的地址#include <iostream>using namespace std;int main(){ int arr[] = {0,1,2,3,4,5,6}; cout<<"arr = "<<arr<<endl; cout&.

2022-01-02 21:42:43 295

原创 C++空指针

void型指针是无类型指针,不是空指针哦野指针是指针没有只想特定的内存单元空悬指针是指针只想的内存已经被释放,可能只想任何地方,也可能指向原单元空指针是指针什么都不指空指针的值有NULL或0;nullptr是空指针,可以转换为一种特殊类型的字面值#include <iostream>//#defineusing namespace std;int abc(char* arr){ cout<<"44444444444444444444

2022-01-02 21:02:07 370

原创 C++的引用与指针(2)

~~指针可以在任何时候初始化引用在声明时候就初始化我都试了。引用不初始化也可以用,用的是默认值(可能是书比较老)~~~引用不能为空NULL,必须总是引用一个对象 指针可以为空,不知想任何地方还有一点我看不懂(我上图了)...

2022-01-02 17:07:18 198

原创 C++引用与指针的区别

1)引用只是变量的别名,不开辟新的空间,与原变量使用的是同一块内存单元指针是新的变量,有自己的存储空间仔细看地址一位一位的比较哦VVVV下面是用指针哦#include <iostream>using namespace std;void abc(int* p){ cout<<"=================="<<endl; cout<<"p = "<<p<<endl; cout

2022-01-02 16:43:58 188

原创 C++的new与malloc

new的使用方法发现new即使只是申请3个元素的所需的内存空间但还是可以给第4个元素赋值,而且输出不会报错但这样其实有风险,可能会把其他的元素的数值给改了#include <iostream>using namespace std; int main(){ int* p; p = (int*)malloc(sizeof(int)*3); p[0] = 0; p[1] ..

2022-01-02 12:56:04 214

原创 C++11的for的新规范

和python的for有点像

2021-12-31 22:30:34 51

原创 C++的运算符重载

运算符重载别人写的,挺好

2021-12-31 22:23:58 45

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除