自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++——栈、队列、优先级队列

一、栈——stack(一)stack的原理  stack就是一个“后进先出”的栈,元素从尾部插入,从尾部取出;(二)stack的接口 1、push()-----入栈; 2、pop()------出栈; 3、empty()----判断栈是否为空; 4、top()------获取栈顶元素; 5、size()-----获取栈中元素个数;(三)stack模拟实现  stack是通过其他的容器来进行适配实现的,只要该容器内部能够实现上面的几个接口,就可以用来实现stack适配器;  C++底

2020-12-11 21:38:54 222

原创 进程控制——进程替换、模拟shell

一、进程替换  1、进程替换    替换一个进程正在调度运行的程序,即重新加载另一个程序到内存中,将现有的一个子进程的pcb的内存指针所指向的内存空间指向这个新的程序(更新页表的映射信息),则这个现有的子进程就跑去调度这个新的程序了;  2、程序替换的意义    fork创建的子进程,代码共享数据独有,父子进程干的是一样的事情;但是通常情况下,我们创建一个子进程的目的并不是为了让子进程与自己干一个事情,而是让子进程运行调度一个新的程序,让他去干其他事情,这就是程序替换的意义;  3、库函数接口

2020-11-28 16:33:37 128

原创 C++——list容器的模拟实现

目录一、定义ListNode结点类二、封装一个迭代器类三、模拟实现list容器(一)定义(二)构造函数(三)拷贝构造函数(四)赋值运算符重载函数(五)析构函数(六)迭代器(七)Capacity(八)元素访问Access(九)Modify一、定义ListNode结点类  因为list容器是用双向循环链表来实现的,所以每一个结点都有指向下一个结点的next指针和指向上一个结点的prev指针;template<class T>struct ListNode{ T _value; List

2020-11-21 20:11:47 213

原创 C++模拟实现vector

一、定义my_vector类#include<iostream>#include<assert.h>using namespace std;template<class T>class my_vector{public: //构造函数 //赋值运算符重载 //析构函数 //迭代器 typedef T* iterator; typedef const T* const_iterator; //Capacity //eleme

2020-11-19 14:34:48 165

原创 C++——模拟实现string

目录一、定义my_string类二、成员函数(一)构造函数(二)析构函数(三)拷贝构造(四)赋值运算符重载三、迭代器四、Capacity(一)获取string容量(二)改变容量五、元素访问(一)[]运算符重载六、string修改(一)插入insert(二)删除erase(三)尾插push_back(四)尾删pop_back(五)追加插入append(六)+=运算符重载七、关系运算符重载八、查找九、输入输出运算符重载(不是成员函数)(一)输入运算符重载(二)输出运算符重载一、定义my_string类#in

2020-11-12 18:11:21 261

原创 C++——string之迭代器

一、string构造void test(){ string str1; //默认构造 string str4("123456"); //C风格字符串创建 string str5 = "123456"; //单参构造隐式类型转换 string str8("12345678", 5); //以字符串前n个字符创建对象,内容为"12345" string str9(10, 'a'); //用n个字符创建对象,内容为10个字符a string str2(

2020-11-12 10:41:45 7245 2

原创 C++——string之对象的构造

string构造  1、默认构造    string(); string str1;   2、C风格字符串创建    string (const char* s); string str2("123456");   3、单参构造隐式类型转换 string str3 = "123456";   4、以字符串前n个字符创建对象    string (const char* s, size_t n); string str4("12345678", 5);   5、用n个字符创建

2020-11-12 10:36:28 117

原创 C++——模板

目录一、泛型编程二、模板(一)函数模板(二)类模板一、泛型编程  我们在编写程序时,可能会遇到实现同一个功能但是所传的参数不同的函数的场景,举个例子void Swap(int& a, int& b){ int tmp = a; a = b; b = tmp;}void Swap(float& a, float& b){ float tmp = a; a = b; b = tmp;}void Swap(double& a, double&amp

2020-11-10 15:18:04 177 1

原创 进程控制——进程创建、退出、回收

一、进程创建(一)进程创建过程  进程创建的一般过程:    (1)分配一个唯一的标识符,在内核中创建出task_struct;    (2)复制父进程的环境信息;    (3)给新进程分配资源(栈、堆等);    (4)拷贝父进程的地址空间内容;    (5)将进程放入就绪队列;(二)进程创建函数——fork()  1、fork()函数头文件:#include<unistd.h>fork()函数:pid_t fork(void);返回值: 父进程返回子进程的pid;

2020-10-30 12:09:26 320

原创 C++——内存管理

一、C/C++内存分布  在我们写代码时,会定义很多的变量,有静态的、全局的、局部的等等,但是这些变量在内存中是分别存放在不同的位置上;二、C语言内存管理  在C语言中,我们是通过malloc/calloc/realloc来申请动态内存的,通过free来释放内存的;malloc:申请一块空间,对里面的内容不做任何处理;calloc:申请一块空间,并对立面的值全部初始化为0;realloc:对空间进行扩容,先申请一片更大的空间,再将原有空间的信息拷贝过来,最后再释放原有空间;free:对mal

2020-10-29 18:26:10 693

原创 进程控制——进程概述

一、冯诺依曼体系(一)冯诺依曼体系结构(二)冯诺依曼体系结构特点  1、由输入设备、输出设备、运算器、存储器、控制器5部分组成;  2、程序和数据必须以二进制的形式不加区分的存放在存储器当中,存放在存储器的哪个位置由存储器决定;  3、计算机在工作时能自动从存储器中取出指令并执行二、进程(一)概念  1、进程:程序的一个具体执行实例,正在运行的程序;进程是操作系统分配资源的基本单位和最小单位;每个进程都有自己独立的地址空间和运行状态;  2、进程和程序的区别: (1)进程是程序的一次动

2020-10-27 23:33:52 290

原创 C++——友元

友元(一)概念  友元分为友元函数和友元类;  友元会增加耦合度,破坏了封装,所以应该尽量少用;(二)友元函数  1、声明与实现  友元函数在类内声明,加friend关键字,在类外实现class Data{public: friend ostream& operator<<(ostream& _cout, const Data& d);private: int _year; int _month; int _day;};ostream&am

2020-10-23 23:24:59 110

原创 C++——static成员

目录static成员(一)概念(二)static成员变量(三)static成员函数(四)注意static成员(一)概念  在C语言中,static可以修饰局部变量、全局变量、函数修饰局部变量:增加了局部变量的声明周期;修饰全局变量:限定全局变量只能在本源文件中使用;修饰函数:限定该函数只能在本源文件中使用;  在C++中,static可以用来修饰成员变量和成员函数;(二)static成员变量  1、概念  static修饰成员变量是一个类内部的全局变量,所有对象共享,可以看做类的成员,

2020-10-23 23:00:14 161

原创 C++——explicit关键字

我们看下面这样一段代码:class A{public: A(int a = 0) {}private: int _a;}int main(){ A a = 10; return 0;}  我们可以看到“A a = 10;”,这个语句的意思是:用10来调用默认构造创建一个匿名对象,再调用拷贝构造赋给a;  我们称这种现象为:单参构造函数隐式类型转换。要注意只有构造函数为一个参数的时候才会进行;   如果想要禁止这种现象的出现,可以使用explicit关键字来修饰构造函数;e

2020-10-23 22:29:11 70

原创 C++类与对象——成员函数

目录类中的六种默认成员函数(一)构造函数(二)拷贝构造函数(三)析构函数(四)赋值运算符重载函数(五)const成员(六)取地址和const取地址操作符重载函数类中的六种默认成员函数  当我们定义了一个类,并且尚未给类中添加任何成员,此时为一个空类,但是看起来是空的,实际上编译器已经为我们隐式定义了六种默认的成员函数:构造函数、拷贝构造函数、析构函数、赋值运算符重载函数、取地址和const取地址操作符重载函数。  那么这六种成员函数都各自具备什么样的属性呢?下面我们来看一下:(一)构造函数1、构造

2020-10-19 00:16:42 369

原创 C++入门基础(三)

目录内联函数内联函数  概念:inline修饰的函数称为内联函数,编译器编译时会进行函数指令的展开,没有栈帧的开销,可以提高代码的效率。  使用局限:1、内联函数只针对比较简单的函数,针对复杂函数也不会展开,所以当代码很长或者有循环或递归的时候不适宜用内联函数;2、inline声明和定义放在一个地方,...

2020-06-21 10:32:27 176

原创 C++入门基础语法(二)——引用

引用

2020-06-16 21:21:13 112

原创 C++入门基础语法(一)

目录命名空间命名空间定义命名空间使用C++标准输入输出缺省参数全缺省参数半缺省参数函数重载函数重载概念函数重载原理命名空间  在C/C++实际开发过程中,一个项目可能有多个人来完成代码的编写,那么不可避免的会有一些变量和函数名会重复,C++中给了一个命名空间这样一个定义来完成对变量和函数的作用域范围的限制。命名空间定义namespace 名字{ 变量; 函数;}例如:namespace test{ int a = 0; void fun(){};}几点注意:1、可以嵌套定

2020-05-25 20:35:17 199

原创 循环队列

循环队列概念及结构循环队列是一种特殊的队列,普通队列普遍使用单向链表来表示,所以整个队列在逻辑结构上是一条链,而循环队列是用数组来进行表示的,而且其逻辑结构上表示为一个环型结构。逻辑结构首先我们看一下循环队列的逻辑结构:循环队列同普通的队列一样都有收尾指针,不同的是循环队列的尾指针是指向最后一个元素的下一个位置,所以循环队列的容量是比数组大小少了一位。物理结构实际上我们的循环队列就是一个一维数组:...

2020-05-19 17:13:31 954

原创 网络管理——网卡改名

查看网络状态、网卡改名我们在拿到一个Linux系统的时候,肯定会去查看他的网络状态,用到的命令是:ifconfig显示如下:这就是这一个Linux的网络状态,我们可以看到第一块网卡的名字叫eth0,但是有的可能名字会不一样,比如ens33,有时候我们需要把名字修改到eth0,步骤如下:1、首先我们打开grub文件,该文件在 “/etc/default/” 下面,找到最长的那一行,在末尾加上biosdevname=0 net.ifnames=02、找到“/etc/sysconfig/n

2020-05-18 20:55:46 367

原创 队列

目录队列的概念及结构队列代码实现队列的概念及结构队列和栈略有不同,队列是先进后出的一种数据结构,通常使用链表来表示,当然有一种特殊的循环队列使用顺序表来进行表示的。队列只允许从后进入,从前弹出,就像我们生活中排队一样,下面来看下队列的结构模型:如上图,队列是只有队头才能删除元素(出队),队尾才能插入元素(入队),由此可以得出数据结构为:typedef int QDataType;//定义结点的结构体typedef struct QNode{ QDataType val; strcut

2020-05-16 21:30:43 143

原创

栈的概念及结构栈使我们经常用到的一种数据结构,其是一种先进后出的单向出口的一种模型,其实现通常是用顺序表进行实现的,下面来看一下栈的模型:上图是反映出栈的一个使用状态的模型,可以得到栈的一个数据结构:typedef int SDataType;typedef struct Stack{ SDataType* array; //栈空间 size_t size; //有效元素个数 size_t capacity; //栈容量}Stack;因为栈的容量和有效元

2020-05-16 21:05:33 129

原创 Makefile基础学习

目录一、Makefile基本写法规则二、Makefile变量及函数(一)简化字符(二)变量(三)函数三、文件管理(一)将所有的.o文件放到obj目录中(二)所有文件管理(三)补充四、小结我们在Linux中写一个工程,使用Makefile来进行工程文件的管理是必不可少的,那么这篇文章就主要来讲一下Makefile的一些基本写法。我们以一个简单的工程为例:这是一个简单的计算器的小工程,我们可以...

2020-05-05 21:40:58 202

原创 链表——双向循环链表

双向循环链表物理存储结构双向循环链表与单链表一样,都是逻辑连续、物理不连续的存储方式,但它的效果要远远优于单链表,其结构如下:双向循环链表首先要有一个头节点,头节点中不存放数据,真正的数据从头节点的下一个节点开始存放;然后每一个节点都有两个指针,分别指向前一个节点和后一个节点;最后头尾相连,就成了双向循环链表。代码实现#include<stdio.h>#include&l...

2020-04-06 21:11:21 273

原创 链表——单链表

链表的形式有很多,主要有一下的区别:1、单向、双向2、带头、不带头3、循环、非循环单链表物理存储形式单链表与顺序表的逻辑存储形式一样,都是线性存储,但是单链表的物理存储缺并不一定连续,它的每个元素之间是由地址指针相连的,所以它的每个单位是由一个存储元素和一个地址指针组成的节点,结构图如下:上图为不带头、单向、不循环链表代码实现#include<stdio.h>#...

2020-04-06 20:53:16 128

原创 顺序表

数据结构所讲述的是数据的存储、组织方式其中最基础的就是线性表了,什么是线性表?顾名思义,就是在逻辑结构上为一条直线的存储方式,主要分为顺序表和链表两种存储形式,今天我们主要来了解一下顺序表。顺序表物理存储形式顺序表的物理存储形式和数组一样,都是在内存中开辟一串连续的存储空间来进行存储,其形式如下:顺序表有静态和动态存储两种之分,静态存储限制了存储空间的大小,不能再增加,而动态存储则可以...

2020-04-06 20:29:56 256

原创 C语言——函数

C语言中的函数分为库函数和自定义函数,库函数顾名思义就是已经封装好了的现成的函数,我们直接调用就可以了,而自定义函数就需要我们自己去写出来。自定义函数函数的组成ret_type fun_name(para1, *){ statement;//语句项}ret_type是返回类型fun_name是函数名para1是函数参数这就是一个函数的基本的形式,其中如果ret_type是vo...

2020-03-27 16:31:08 87

原创 初识C语言

C语言是一门计算机编程语言,广泛应用于底层开发。C语言跟汉语英语一样,不过他不是人类的语言,而是计算机的语言,在我们刚刚接触到编程的时候可能都会写这样一段代码:#include<stdio.h>int main(){ printf("Hello World!\n"); return 0;}这就是一段最简单的代码,我们从中可以看出,它有头文件、主函数、库函数、数据类型...

2019-12-09 23:16:44 150 1

空空如也

空空如也

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

TA关注的人

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