自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [跟李沐读论文]如何精读一篇论文

是最详细的一遍,需要知道每一段在干什么,为什么是这么做的,有些地方没有做的话,自己会怎么做,在看完文章后大概能够想到想到其中的细节,以及具体怎么完成的。在干什么事情,怎么提出的,和别人差距有多大, 在读的时候把其中他们提到的文献都圈出来,例如这个方法是在谁的基础上改进出来的,问题是怎么提出来的。,在摘要中提到的问题给一个结论,看完大概知道这个论文干了什么,可以去看看解释中和方法中的图和表,是不是适合自己的论文,需不需要继续读下去。,知道每一块在干什么,不要太注意很多细节,主要搞清楚。- 如果继续往下读,

2024-07-16 18:50:31 121

原创 C++之模板和可变模板参数

现在的C++编译器实现了一项新的特性:模板(Template),简单地说,模板是一种通用的描述机制,也就是说,使用模板允许使用通用类型来定义函数或类等,在使用时,通用类型可被具体的类型,如intdouble甚至是用户自定义的类型来代替。模板引入一种全新的编程思维方式,称为泛型编程或通用编程。泛型编程:不是针对某一种具体的类型进行编程,而是针对一类类型进行编程,将类型抽象成T(类型参数化)#形象地说,把函数比喻为一个游戏过程,函数的流程就相当于游戏规则。

2024-03-25 11:29:23 1147

原创 C++之移动语义与智能指针

如果右值引用本身没有名字,那右值引用就是右值,如右值引用作为函数返回值。,用来存储指向动态分配(堆空间)对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏。std::move()作用于内置类型没有任何作用,内置类型本身是左值还是右值,经过std::move()后不会改变。,提供一个可以自由选择析构的接口,这样,我们的智能指针就可以处理不同形式开辟的空间以及可以管理文件指针。右值引用:可以绑定到右值,但是不能绑定到左值。将左值转换为右值后,左值就不能直接使用了,如果还想继续使用,必须重新赋值。

2024-03-24 21:04:53 1089

原创 2024-3-17上机C++刷题

Old Bill_牛客题霸_牛客网 (nowcoder.com)对称平方数1_牛客题霸_牛客网 (nowcoder.com)与7无关的数_牛客题霸_牛客网 (nowcoder.com)xxx定律_牛客题霸_牛客网 (nowcoder.com)反序数_牛客题霸_牛客网 (nowcoder.com)3377. 约数的个数 - AcWing题库。3644. 水仙花数 - AcWing题库。3390. 特殊乘法 - AcWing题库。

2024-03-18 09:22:01 818

原创 C++之多态

什么是虚函数呢?虚函数就是在基类中被声明为virtual,并在一个或多个派生类中被重新定义的成员函数。是一个成员函数,并且在前面加上virtual关键字如果在基类中定义类虚函数,那么在派生类中该函数就是虚函数,即使在派生类中没有加virtual重定义(重写、覆盖):派生类要保证该虚函数的名字与基类相同,函数的返回类型也要相同,函数的参数列表也要相同(包括参数的个数、参数的类型、参数的顺序),言外之意,唯一可以不一样的,就是函数体。// 类内部class 类名。

2024-03-17 17:38:55 816

原创 C++之关联式容器set和map的使用

【代码】C++之关联式容器set和map的使用。

2024-03-05 15:36:19 286

原创 C++面向对象之继承

当一个派生类继承一个基类时,需要在派生类的类派生列表中明确的指出它是从哪个基类继承而来的。class 子类(派生类): public/protected/private 父类(基类) //类派生列表//数据成员//成员函数派生类的生成过程包含3个步骤:1. 吸收基类的成员2. 改造基类的成员3. 添加自己新的成员总结:吸收,改造,添加public:, _z(z)print();

2024-03-01 15:24:23 804

原创 C++之atexit-pthread用法详解

atexit函数先注册三个func函数,然后等待3秒,再打印”hello main”(如果main函数中输出部分不加\n,则main函数要输出的内容会先放到标准输出缓冲区中,当main中调用exit函数的时候,会做一些自身清理工作,同时刷新标准输出缓冲区中的内容),当执行到exit(0)时,exit会自动调用这些已注册过的函数,但是由于压栈过程中先进后出的原则,所以先注册的函数最后执行。按 POSIX.1-2001 的规定,如果在终止处理程序中调用 longjmp()函数,这样导致的结果是未定义的.

2024-02-28 21:37:21 1042

原创 C++之标准库中string的底层实现方式

我们都知道, std::string的一些基本功能和用法了,但它底层到底是如何实现的呢?其实在std::string的历史中,出现过几种不同的方式。下面我们来一一揭晓。我们可以从一个简单的问题来探索,一个std::string对象占据的内存空间有多大,即sizeof(std::string)的值为多大?如果我们在不同的编译器(VC++, GNU, Clang++)上去测试,可能会发现其值并不相同;即使是GNU,不同的版本,获取的值也是不同的。

2024-02-28 21:08:18 857

原创 C++之类作用域

作用域可以分为几部分内容。在类中定义的成员变量和成员函数的作用域是整个类,这些名称只有在类中(包含类的定义部分和类外函数实现部分)是可见的,在类外是不可见的,因此,可以在不同类中使用相同的成员名。另外,类作用域意味着不能从外部直接访问类的任何成员,即使该成员的访问权限是public,也要通过对象名来调用,对于static成员函数,要指定类名来调用。如果发生“屏蔽”现象,类成员的可见域将小于作用域,但此时可借助this指针或“类名::”形式指明所访问的是类成员,这有些类似于使用::访问全局变量。

2024-02-23 15:59:17 1128

原创 C++之运算符重载

由自定义类型向其他类型的转换是由类型转换函数完成的,这是一个特殊的成员函数。operator 目标类型()//...类型转换函数具有以下的特征:1.必须是成员函数;2.参数列表中没有参数;3.没有返回值,但在函数体内必须以return语句返回一个目标类型的变量。int _iy;

2024-02-23 11:18:00 789

原创 C++之C++输入输出流

ios是抽象基类,由它派生出istream类和ostream类,iostream类支持输入输出操作,iostream类是从istream类和ostream类通过多重继承而派生的类。根据不同的情况,对文件的读写操作,可以采用不同的文件打开模式。又比如,我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的。比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以。

2024-02-20 15:27:44 1066

原创 C++之new和delete表达式

注意:这里需要单独写一个destroy函数,通过调用这个函数来完成堆对象的资源销毁,并且要注意对象本身的资源也需要进行销毁,那么此时this指针就会起到很大的作用,直接delete this即可完成对对象本身的销毁,这一步操作不仅会调用析构函数,还会完成对指针对象的销毁.要达到以上的效果,咱们只需要将operator new放入Student类的private区域。要达到以上的效果,咱们只需要将Student类的析构函数放入private区域。指向新分配并构造的构造函数对象的。,以保存指定类型的一个对象。

2024-02-20 10:16:51 383

原创 C++之内存对齐

1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而。

2024-02-18 11:24:00 302

原创 C++之类和对象

这个作用是显而易见的。例如当今世界有76亿人,如果不会抽象思维,我们每遇到一个人,都要认知一遍:啊!这个对象有眼睛,有耳朵,有鼻子有嘴,有胳膊有腿……要是真这样,世界也太疯狂了。有了类的概念,我们就可以只记类的数据和逻辑,而对于具体对象,只要知道它属于什么“类”,一切就都知道了,所需要区分的只是不同对象的数据具有不同值而已。接下来,我们就来一步一步地探索C++中有关类的一切。

2024-02-18 11:00:56 905

原创 C++之程序内存分配方式

现在的应用程序都运行在一个虚拟内存空间里,以32位系统为例,其寻址空间为4G,大部分的操作系统都将4G内存空间的一部分挪给内核调用,应用程序无法直接访问这一段内存,这一部分内核地址成为内核态空间,Linux默认将高地址的1G空间分配给内核,用户使用剩下的3G空间成为用户态空间,用户态空间一般有如下默认区域:1. 栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2024-02-05 20:35:31 797

原创 C++之字符串

字符串处理在程序中应用广泛,。对字符串进行操作的C函数定义在头文件或中。在使用时,程序员需要考虑字符数组大小的开辟,结尾空字符的处理,使用起来有诸多不便。

2024-02-05 20:11:56 373

原创 C++之函数重载,默认参数,bool类型,inline函数,异常安全

内联函数是C++的增强特性之一,用来降低程序的运行时间。编译器将使用函数的定义体来替代函数调用语句,这种替代行为发生在编译阶段而非程序运行阶段。定义函数时,在函数的最前面以关键字“inline”声明函数,即可使函数称为内联声明函数。x : y;

2024-02-05 17:16:13 782

原创 C++之强制转换

类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些。另一个缺点就是,c风格的转换不容易查找,它由一个括号加上一个标识符组成,而这样的东西在c++程序里一大堆。

2024-02-05 16:43:05 318

原创 C++之引用

变量名实质就是一段连续内存空间的别名。那一段连续的内存空间只能取一个别名吗?显然不是,引用的概念油然而生。在C++中,引用是一个已定义变量的别名。类型 &引用名 = 目标变量名;int a = 1;在使用引用的过程中,1. &在这里不再是取地址符号,而是引用符号,相当于&有了第二种用法2. 引用的类型必须和其绑定的变量的类型相同3. 声明引用的同时,必须对引用进行初始化;否则编译时报错4. 一旦绑定到某个变量之后,就不会再改变其指向。

2024-02-05 16:33:03 642

原创 C++之new/delete表达式

实际情况中很多时候一些不太好的实践会导致对象的生命周期变得很长,也叫“内存泄漏”.申请了内存用完了不释放,如申请了1024M内存,分配了512M内存一直不回收,那么可用内存就只有512M,仿佛泄漏掉一部分。只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏。,在C++中提供了新的开辟和回收堆空间的方式,即采用。在C中用来开辟和回收堆空间的方式是采用。

2024-02-05 16:03:33 191

原创 C++之const关键字的用法

2)类型和安全检查不同。宏定义没有类型,不做任何类型检查,运行的时候才会发生错误;const常量有具体的类型,在编译期会执行类型检查。1)编译器处理方式不同。宏定义是在预处理阶段展开,做字符串的替换;而const常量是在编译时。常考题:const常量与宏定义的区别是什么?

2024-02-05 15:52:12 134

原创 C++之命名空间

命名空间又称为名字空间,是程序员命名的内存区域,程序员根据需要指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间中,从而与其他全局实体分隔开。通俗的说,每个名字空间都是一个名字空间域,存放在名字空间域中的全局实体只在本空间域内有效。名字空间对全局实体加以域的限制,从而合理的解决命名冲突。char val2;在声明一个命名空间时,大括号内不仅可以存放变量,还可以存放以下类型:变量,常量,函数(可以是定义或声明),结构体,类,模板,命名空间(可以嵌套定义)struct Foo。

2024-02-05 15:35:59 817

原创 C++历史发展概述

C++发明至今已经三十多年了,从最早的简单面向对象逐渐发展成为包含泛型、函数式、模板元等许多范式的复杂混合体,其中的每一个编程范式都可以自成体系,在开发过程中打出一片天地。二十年前,面向过程、基于对象是C++编程的主流范式;十年前,主流范式变成了面向对象+设计模式.而现在C++编程的主流范式则有“返璞归真”的趋势,过度使用虚函数的庞大类继承体系逐渐被摒弃,而使用泛型、函数式等新型范式开发精致的小类并给予良好的组合成为了大方向。

2024-02-01 17:13:30 633

原创 Linux下代码的编译与调试

将上一步生成的二进制文件与其他的文件合在一起打包,生成可执行程序(文件)。当我们进行编译的时候,要使用一系列的工具,我们称之为工具链。SDK就是编译工具链的简写,我们所使用的是gcc系列编译工具链。(1) 预处理:预处理器将对源文件中的宏进行展开,主要的处理以#开头的东西,还可以去除注释,添加行号,展开头文件。使用-v参数来查看gcc的版本,从而确定某些语法特性是否可用,比如是否允许使用时声明。期间所使用的工具依次是预处理器,编译器,汇编器as,链接器。对于.c格式的C文件,可以采用gcc或g++编译。

2024-02-01 16:44:34 332

原创 vim编辑器使用

在底行模式下,所键入的字符系统均作命令来处理,如:q代表退出,而编辑状态则是用来编辑文本资料的。查看该命令的帮助提示(不常用,当不小心按F1时,通过:q进行退出)进入可视模式以后,可以使用光标移动指令来移动光标,并且会选中区域。可以删除一个字符,可以指定删除多少个字符,n代表字符的数目。删除光标到行尾的文本,常用语删除注释语句 (等价于d$)删除一个单词,可以指定删除多少个单词,n代表字符的数目。vim分为三种模式:命令模式,编辑模式和底行模式。从光标开始往下复制n行,[n]表示一个整数。

2024-02-01 16:20:12 842

原创 Linux常用重要命令

如果是符号链接,它还会显示指向文件的名字。

2024-01-31 11:44:10 670

原创 排序问题上机考试刷题

假设查找次数为 m,那么线性查找的时间复杂度为 O(nm),二分查找的时间复杂度为O(nlogn + mlogn),可见当 m 特别小时线性查找很有优势,但当 m 大到一定程度时,二分查找的性能便会远远优于线性查找。如果不对数据进行排序,那么在查找某个特定的元素时,需要依次检查所有的元素,这样的方式对于单次或少量的查找来说运行效率是很高的,但查找次数较多时,如果所有元素都是有序的,那么就能更快地进行检索,而不必逐个元素地进行比较。有的读者可能会有疑问,虽然二分查找的时间复杂度要低于线性查找,但排序的时。

2024-01-29 20:29:06 458

原创 Linux系统简介及发展历史

通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red HatEnterprise Linux、CentOS)和openSUSE等。在Linus刚刚推出Linux内核的时候,它实际上只有不到1万行代码,实现了一个简单的内核。·1993年,宏内核构造的Linux内核面世,并且Linux内核的源代码遵循GNU的GPL。硬件设备在使用的时候也会加载到内核里面。

2024-01-28 11:43:32 1037

原创 排序问题上机考试刷题

排序与查找可以说是计算机领域最经典的问题,排序和查找问题在考研机试真题中经常出现。排序既是考生必须掌握的基本算法,又是考生。首先学习对基本类型的排序。对基本类型排序,是指对诸如整数、浮点数等计算机编程语言内置的基本类型进行排序的过程。重新排序以后输出(也按空格分隔),要求: 1.先输出其中的。查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,。对输入的n个数进行排序并输出。整数奇偶排序_牛客题霸_牛客网。成绩排序_牛客题霸_牛客网。排序_牛客题霸_牛客网。

2024-01-27 20:29:39 449

原创 模拟问题刷题

你的任务是编写一个程序,根据今天关于日期的约定,计算给定日期最近的过去或未来的星期几。输入/输出中的月份和星期名称:一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月,星期日、星期一、星期二、星期三、星期四、星期五、星期六。模拟类题目是机试题中出现频率很高的一种类型,这类题目的特点是并不涉及特别高 深的知识,只需利用程序实现题目的要求。然 而,在面对这类题目时,大可不必担心,这类题目是怎么描述的,就按照它说的做,用代码模拟出题面的要求即可。月份名称用对应的英文名称,首字母大写。

2024-01-26 20:40:08 812

原创 初识“操作系统“(Operator System)

的既是对操作系统内核功能的保护,防止操作者恶意或者操作原因使得操作系统进入崩溃或者宕机的危险,对核心数据的代码进行保护组织;,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发,提高开发效率,屏蔽底层细节的理解负担,便于更高效地设计出产品.角度,即程序员看来,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做。·系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以。·内核(进程管理,内存管理,文件管理,驱动管理)

2024-01-24 17:45:04 356

原创 冯诺依曼体系结构

首先我们要有一个概念,这里内存起到了一个缓和速度矛盾的作用,将计算机内部硬件的处理速度排序:CPU中寄存器>>cathe>>内存>>磁盘/SSD>>光盘。由于存在这样的速度矛盾,根据木桶效应就可以知道,如果直接从外设传入到CPU,那么CPU大部分时间将会处于闲置状态,大量的任务的处理时间都趋向于等于最慢的设备的时间,每一次数据的处理都需要等待最慢的数据处理完毕才行,这样的效率是极度低下的,利用内存作为中间媒介,是利用的。·输入设备:包括键盘, 鼠标,扫描仪, 写板,磁盘,网卡,话筒等。

2024-01-24 09:27:03 337

原创 Linux调试器-gdb使用

加上 -g 选项。

2024-01-24 09:11:25 356

原创 枚举问题刷题

枚举类的题目本身并不复杂,但在采取枚举策略之前, 一定要好好分析题目的枚举量,枚举量过大时, 需要选择其他解决方法。即使问题适合用枚举策略来求解,也最好对题目进行一定的分析,以便通过减少部分无效的枚举来使得程序更加简洁和高效。考研机试题目中的很多问题往往能通过暴力方法来求解,这些题目并不需要进行过多的思考,而只需枚举所有可能的情况,或者模拟题目中提出的规则,便可以得到解答。如果这个题目在处理1/3这个地方的时候不将数据强制类型转换成浮点类型,那么1/3的结果永远都是0,以后在处理这类问题的时候一定要注意,

2024-01-22 21:01:14 847

原创 王道考研数据结构第四章知识点总结

算法流程复杂,大致可能就是选择题考点,牢记模拟流程。4.2.1 朴素模式匹配算法。

2023-07-25 17:14:44 140

原创 王道考研数据结构第三章知识点总结

3.1.1 栈的基本概念 注意:卡特兰数结合先序进栈,中序出栈考察,第五章树与二叉树2015年关于不同二叉树的个数的题目 3.1.2 栈的顺序存储实现 3.1.3 栈的链式存储实现 3.2.1 队列的基本概念(详见课件)3.2.2 队列的顺序实现(详见课件) 3.2.3 队列的链式实现(详见课件) 3.2.4 双端队列(详见课件) 3.3.1 栈在括号匹配中的应用 3.2.2 栈在表达式求值中的应用 3.3.3 栈在递归中的应用 3.3.4 队列的应用 3.4 特殊矩阵的压缩存储

2023-07-25 17:06:26 179

原创 王道考研数据结构第二章知识点总结

2.1 线性表的定义和基本操作 2.2.1 顺序表的定义 2.2.1 顺序表的插入删除 注意:插入操作中插入一个元素是从后往前移(从最后一个开始处理);而删除操作中是从前往后移(从需要删除的后一个开始移)。2.2.2 顺序表的查找 2.3.1 单链表的定义 2.3.2-1 单链表的插入删除 注意不带头结点时的前插操作需要单独进行操作 注意:上述所有代码中的位序j在不同情况时候的初始化取值,带头结点和不带头节点时的情况可能不一样,以及对于指定节点的删除操作和插入操作的复制拷贝操作来降低时间复杂度的操作

2023-07-25 16:07:15 157

原创 王道考研数据结构第一章知识点总结

1.1.1数据结构的基本概念 1.1.2 数据结构的三要素 1.2.1 算法的基本概念 1.2.2 算法的时间复杂度 1.2.3 算法的空间复杂度

2023-07-24 16:32:23 93

原创 王道考研数据结构第八章知识点总结

8.1 排序的基本概念8.2.1 插入排序(具体执行细节详见课件)8.2.2 希尔排序(详见课件) 6.3.1 冒泡排序(详见课件) 冒泡排序的写法有很多种。可以从前往后冒,也可以从后往前冒,只要边界控制逻辑正确即可。 8.3.2 快速排序(详见课件)(注意几种不同的实现方法) 8.4.1 简单选择排序(详见课件) 8.4.2 堆排序(详见课件) 8.4.3 堆的插入删除(详见课件)8.5.1 归并排序(详见课件) 8.5.2 基数排序(详见课件) 8.7.1 外部排序(详见课件) 注:归并后的每个段

2023-07-22 16:57:02 80

C++之模板和可变模板参数

C++之模板和可变模板参数

2024-03-25

C++之移动语义与智能指针

C++之移动语义与智能指针

2024-03-24

C++之多态的思维导图帮助回忆

C++之多态的思维导图帮助回忆

2024-03-17

C++之继承思维导图的总结

C++之继承思维导图的总结

2024-03-01

C++之运算符重载的思维导图

C++之运算符重载的思维导图

2024-02-23

C++之C++输入输出流

C++之C++输入输出流

2024-02-20

C++之new和delete表达式

C++之new和delete表达式

2024-02-20

C++之类和对象的思维导图

C++之类和对象的思维导图

2024-02-18

C++历史发展概述,了解C++历史

C++历史发展概述,了解C++历史

2024-02-01

Linux下代码的编译与调试

Linux下代码的编译与调试

2024-02-01

vim编辑器使用思维导图

vim编辑器使用思维导图

2024-02-01

Linux常用命令思维导图

Linux常用命令思维导图

2024-01-31

空空如也

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

TA关注的人

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