【C++】STL:vector
STL的第二站,便是vector了。 对于学习STL,有一个非常大的好处便是,它们有很多函数都是相通的!这也是面向对象的一大好处:背后的函数实现可能不同,但是使用方式相同。 1.简单了解vector https://m.cplusplus.com/reference/vector/vector/ 老样子,打开我们的cplusplus——然后惊奇的发现,它换UI了!终于不再是那个2000年初的模样了(虽然这和我们的使用没啥关系) 不摸鱼了,来看看vector究竟是何方神圣——其实他就是一个顺序表 和string不同的是,vector有模板参数,可以存储任何类型的内容。int、double、char、甚至string。 这一点在cplusplus网站上的第一行便告诉了我们 1template < class T, class Alloc = allocator<T> > class vector; // generic...
【Linux】权限管理
Linux部分的内容,我以权限管理作为起始。 关于Linux命令行操作的部分,大家可以去网上搜搜,教程很多,且全面:【链接】。这里我就不再把相同的东西复述一遍了,毕竟Linux命令这种东西,你不会的时候可以去查,常见的命令敲多了肯定忘不掉 不多说,开始Linux权限操作的内容吧! 本篇博客所有演示均在CentOS7.6下进行 [TOC] 1.什么是权限?权限是用于对用户进行约束的。正好比视频网站的vip一样,没有vip权限,你就看不到只有vip才能观看的影片。 在linux中,用户分为两种 root:超级用户 其他:普通用户 其中root用户的权限最高,可以在系统里面为所欲为。其所作操作在一定程度上会影响用户的使用环境。比如你使用root用户在系统里面安装了某个程序,那么所有子用户都可以使用这个程序,反之不行。 在root用户中,你还可以通过su user这个命令切换到任何子用户而不用输入密码。但是从子用户切换到root则需要输入root用户的密码。所以,保证你的root用户密码不被他人知道是很重要的! 2.权限管理本篇博客主要关注Linux中的文件权限 2.1...
【C++】STL:string
这是接触STL的第一篇博客,让我们以string为始,走入SLT的世界吧! [TOC] 1.何为STLSTL是C++标准库的重要组成部分,其作用是为绝大多数数据结构提供轮子,是一个包罗了数据结构和算法的软件框架。 在之前C语言的数据结构专栏中,顺序表、链表等等都是需要我们自己造轮子来实现。但在C++中,有STL就好比站在了巨人的肩膀上,可以走的更远。当我们需要使用这些内容时,无需自己重新造轮子,从而大大提高了开发效率。 1.1 STL版本这里我直接贴一个C语言中文网的链接👉【点我】 里面详细介绍了STL发展历程中出现的几个版本,其中SGI因为被Linux的GCC所使用,可移植性高。之后的博客主要是学习SGI STL版本。 1.2 STL组成同样是C语言中文网的资料👉【链接】,我将它整理为了下面这个思维导图 在面试中,STL的内容也是HR经常考察的。所以我们一定要认真学习这一部分的知识点! 1.3...
【C++】模板:了解泛型编程
本篇是C++模板学习的一些笔记 [TOC] 1.了解泛型编程泛型编程,故如其名,是一个泛化的编程方式。其实现原理为程序员编写一个函数/类的代码示例,让编译器去填补出不同的函数实现 就好比活字印刷术,可以灵活调整印刷的板块和内容,比只能固定印刷某一个内容的雕版印刷术效率更高,也让印刷术由此得到了更广泛的应用。 在C++中,函数重载和模板的出现,让泛型编程得到了实际的应用。其中模板,就是类似活字印刷术一样的存在。 我们写一个模板,编译器帮我们按照我们写的模板的方式,实例化成不同的函数。相当于替代了一部分操作,节省了代码量。 2.函数模板八八了那么多没用的,让我们来看看函数模板的语法实现吧 2.1 简单示例下面是一个最简单的交换函数的例子,通过标明模板参数T,让编译器自动识别函数传参,推测并实例化出不同的函数,供程序来调用。 1234567template<typename T>void Swap(T& left,T& right){ T temp = left; left = right; right =...
【C++】动态内存管理
在之前类和对象的博客里面,已经记录过了C++中动态内存管理函数new和delete的基本使用。本篇博客是对C++动态内存管理的进一步细化 [TOC] 1.C/C++内存分区这是一个老生常谈的问题了,直接看下面这个图吧! 这里的数据区其实就是静态区,而代码区是常量区。这里的BBS区先暂时pass掉。 要想辨别上面的几个内存分区,可以现来看下面这个代码,你能分的清楚它们都是存在内存的哪一个区域吗? 12345678910111213141516int a = 1;//数据区static int b = 1;//数据区int main(){ static int c = 1;//数据区 int d = 1;//栈 int arr1[10] = {1, 2, 3, 4};//栈 char arr2[] = "abcd";//栈 char* arr3 = "abcd";//"abcd"存在代码区 int* ptr =...
【Git】如何同步Gitee和Github的仓库(超简单)
本篇博客的设置方法同样可以适用于gitlab等其他平台 不多bb,直入主题⏲ 实现两个仓库的同步1.准备两个仓库分别在两个平台创建一个相同名字的仓库,当然,你也可以在a平台上导入b平台已有的仓库,github和gitee目前都支持从别的平台导入仓库 这部分操作想必大家都会,就不演示了 2.克隆到本地需要注意的是,你要保证其中一个是主仓库。如果是多人合作仓库的话,想两个平台的远程仓库同时多人合作并保持同步是相对困难的。 https://gitee.com/musnow/LetsOJ 以我创立的这个多人OJ打卡仓库为例,现在我想得到的效果是,我和朋友们在gitee上面进行打卡协作,然后我通过git操作将这个仓库同步到github上面,仅供展示 当然如果有小伙伴愿意用github进行fork和pull request操作那我也是举双手双脚赞同+欢迎的 需要做的是,既然gitee是主战场,那就对gitee进行克隆操作 1git clone...
【C++】快速学习类和对象,看这一篇就够了
本篇博客是学校大一下C++期末考察的要求,包含了C++中类和对象的大部分内容,适合学习类和对象的你观看。最后还有两个小项目,综合了绝大部分类和对象的知识,很适合练手+深化学习。 为了避免被同校copy,本篇博客只在我的HEXO个人博客上发布 第一章 绪论1.1 面向对象程序特点与目标面向对象有下面几个特征: 类与对象:把现实世界中的某一类东西,提取出来,用代码表示; 封装性:把过程和数据封装到一个包裹里面,对数据的访问只能通过公开权限的函数接口来进行操作; 继承性:一种联结类的层次模型,类似树状结构; 多态性:允许不同类的对象对同一消息做出响应,用不同的方法来解决一个问题。 其中 封装、继承、多态 被称为面向对象的三大特性 通过这些特征,我们可以看得到,其实面向对象的程序也是在C语言的面向过程的基础上得来的。其目的也是为了更好的服务某一个具体的问题,并通过这个问题衍生出不同的解题方法,并用代码来表示解决一个问题对象的过程。 1.2 面向对象程序知识架构 第二章 面向程序对象关键支撑技术2.1...
【C++】类和对象2:默认成员函数+操作符重载
本篇是类和对象的第二站🚌 主要讲述类的几个默认成员函数,以及操作符重载 本篇博客会涉及到很多之前C++专栏里面提到的知识点,建议连起来观看。 感谢你关注慕雪,欢迎来我的寒舍坐坐❄慕雪的寒舍 [TOC] 默认成员函数当我们创建一个类的时候,即便类里面啥都不放,都会自动生成下面6个默认成员函数 它们都有啥功能呢?且听我一一道来 1.构造函数众所周周知,当我们写C语言的顺序表、链表等代码的时候,一般都会写一个Init函数来初始化内容。 123456void...
【C++】类和对象1:初识类+this指针
不知你在学习C语言和C++的适合,曾否听过老师这么讲述这两个语言之间的区别: C语言是面向过程的 C++是面向对象的 我一直不太理解这二者之间的区别,在查阅了一些博客后,发现了一个比较好的解释👉【传送门】 用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。 本篇博客,就让我们从类和对象开始,渐渐了解什么是“面向对象编程” 感谢你关注慕雪,欢迎来我的寒舍坐坐❄慕雪的寒舍 [TOC] 1.类的引入1.1结构体在C语言中,我们可以定义自定义类型:结构体。在C++中对结构体的语法进行了扩充,结构体内部不仅能定义变量,还能定义函数 12345678910struct Student{ void Print() { cout<<_name<<" "<<_sex<<"...