自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】进程状态

我们需要知道进程的不同状态。一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)在操作系统原理中:运行状态分为以下三种:运行状态(执行)、阻塞状态、就绪状态1. 运行状态:此状态下是指:进程正在使用CPU执行其指令。进程在运行状态下可能会因为时间片用完(时间片用完,但程序还没执行完)或被其他更高优先级的进程抢占而切换到就绪状态。2.阻塞状态:只能由运行状态转换过来,进程在运行到等待某个事件(如I/O操作完成(如等待cin输入)、信号等)时转入阻塞状态。

2025-01-14 22:51:12 1382

原创 【Linux】操作系统与进程概念

任何计算机系统都包含一个基本的程序集合,称为。笼统的理解,操作系统包括:1.内核(进程管理,内存管理,文件管理,驱动管理)2.其他程序(例如函数库,shell程序等等)我们先从下往上介绍学习(下三层):1.:底层硬件是指计算机系统中的实际物理设备,包括内存、硬盘、显示器、键盘、鼠标等。底层硬件是计算机系统的基础,提供计算和存储能力,以及与外部世界的交互接口。2.:驱动程序是一种特殊的软件,用于与特定硬件设备进行通信和控制。

2025-01-14 21:18:29 848

原创 C++11(二)

本章节将延续上一章节的描述的右值与右值引用做进一步介绍,

2024-12-31 22:32:25 776

原创 C++11 (一)

左值引用给左值取别名,通常是直接对变量进行引用。注意左值引用不能绑定到右值,除非使用。

2024-12-14 17:39:43 865

原创 C++(十八) map与set

如果不支持。

2024-12-13 21:19:59 762

原创 红黑树(Red-Black Tree)

红黑树(Red Black Tree)是一种自,通过添加颜色信息来确保在进行插入和删除操作时,树的高度保持在对数级别,从而保证了查找、插入和删除操作的时间复杂度为 O(log n)。这种树可以很好地解决普通二叉搜索树可能退化为链表的问题。

2024-12-11 23:16:00 980

原创 AVL 树

什么是AVL树?是最早发明的自平衡二叉查找树。一个AVL树要么是一棵空树,要么是一棵具备以下性质的二叉搜索树:它的左右子树都是AVL树。左右子树的高度差(绝对值)不超过1。

2024-10-30 20:25:25 809

原创 搜索二叉树 Binary Search Tree(BST)

【提醒】本章内容需掌握二叉树结构的基本概念和特性,不然可能阅读起来比较费劲。

2024-10-28 23:57:50 944

原创 C++(十七) 多态

通俗来说,就是。多态分为。这里我们重点讲,同时简单介绍编译时多态。

2024-10-07 22:10:53 1163

原创 C++(十六) 继承 part2

C++(十五)继承 part1-优快云博客书接上文,这篇将进一步介绍C++中继承体系的使用与细则。本文将从以下几部分内容完整地探讨继承体系派生类的默认成员函数(主要)基类中静态成员继承与友元多继承&复杂的菱形继承(粗略)一、派生类的默认成员函数首先先回忆以下默认成员函数:编译器在我们没有显式定义这些函数时,会自动为类生成的函数。多继承是指一个类同时继承多个基类的能力。一个子类可以从两个或多个基类继承成员数据和成员函数。这种机制允许子类同时具备多个基类的功能。多对一继承。

2024-09-09 15:37:40 754

原创 C++(十五)继承 part1

这是一个现有的类,它的属性(成员变量)和方法(成员函数)可以被其他类继承。

2024-09-05 21:35:21 921

原创 C++(十四)模板进阶

类模板特化(Class Template Specialization)是C++模板编程中的一个重要特性,允许针对特定的模板参数提供专门化的实现。在我们学习的模板的过程中,分为类模板和函数模板,函数特化很自然的也分为类模板特化函数模板特化。

2024-08-30 22:13:18 1215

原创 C++(十三) 反向迭代器

如果学过普通迭代器的小伙伴,那么对反向迭代器的使用也是手到擒来的,因为它用法和普通迭代器非常的类似。值得注意的是,它的底层实现也是值得我们去观察,讨论的。当你对反向迭代器解引用时,它实际上会先将内部正向迭代器递减一次(即指向前一个元素),然后返回该位置的值。因为反向迭代器的内部正向迭代器通常指向的是“下一个”位置。类(仅参考不是源码),这个类模拟了C++标准库中的反向迭代器的基本功能,方便大家理解(如果很难看懂就看懂怎么用就好了)换句话说,反向迭代器从容器的末尾开始,逐步向前移动,直到到达容器的开头。

2024-08-30 10:18:11 1441

原创 C++(十二)优先级队列 Priority_queue

priority_queue类的模板相较于queue是更复杂一点的,也是我们学习的难点:(源定义)template<class T,... ...上面的源码中类模板给了缺省值:默认容器是vector,默认生成的是大堆注意:Compare = less<> 是大堆template<class T,... ...T:数据类型Containter(容器):使用什么容器,(结合缺省值来看:默认容器是vector<T>)Compare(比较):建大堆还是小队。

2024-08-26 21:35:39 1028

原创 C++(十一)适配器 栈和队列——stack & queue + deque

时,可以直接在栈中使用构造函数参数创建对象,避免了临时对象的创建。(简而言之:当有自定义类型再考虑使用emplace)上面介绍的已经是stack的绝大多少使用内容了,剩下的一些冷门一点的函数,这里不作介绍,大家感兴趣可以去参考网站上查看了解详细用法。2.2queue。

2024-08-26 00:15:40 895

原创 C++(十) list

频繁的随机访问频繁在容器的尾部添加或删除元素vector会表现得非常高效相对较少的中间插入和删除vector在中间插入和删除数据效率较低(因为需要挪动后面全部数据)内存连续性频繁的中间插入和删除,list支持在 O(1) 时间内在链表的任意位置插入或删除元素 (不需要挪动后面数据)迭代器的稳定性,插入或删除元素不会使现有的迭代器失效(除非删除了迭代器指向的元素)不需要随机访问,list不支持随机访问,可以遍历链表但效率低避免内存重新分配,每个元素都是独立分配的节点,因此在插入新元素时不需要像。

2024-08-23 03:11:58 1173

原创 C++(九) (STL)Vector

C++ 标准模板库(Standard Template Library,简称 STL)是 C++ 标准库的重要组成部分,提供了一套常用的模板类和函数,用于数据存储、操作和算法的实现。STL 是 C++ 强大的基础库,使得开发者能够高效、灵活地处理复杂的数据结构和算法。注:string在STL之前创造,所以严格来说string不属于STL,但是STL的容器设计的风格也参考了string(或说保持风格统一),所以在我们学习过程中会感觉STL的容器会有string的影子。

2024-08-22 02:47:26 994

原创 c++(八) string

string简单点理解就是C++在库中帮我们定义好的类,我们只需要学会用就好了。string在C++ 标准库中用于处理字符串。相对于 C 语言中的 C 风格字符串(以'\0'结尾的字符数组),提供了更多的功能,并且更安全、易用。里面对string操作函数都有详细的介绍。

2024-08-21 19:07:05 1016

原创 C++(七)模板

什么是模板?模板可以看作是函数或类的蓝图。与其指定具体的数据类型(如int或double),你可以使用一个占位符(通常称为“模板参数”),这个占位符在使用模板时被替换为具体的类型。是一种编程范式,它允许编写代码时使用类型参数,从而使得代码能够处理多种数据类型而不需要重复编写相似的代码。通过泛型编程,开发者可以编写更加通用、可复用的代码,提高代码的灵活性和可维护性。在C++中,泛型编程主要通过模板来实现。模板是一种编译器机制,它允许在编写函数或类时使用类型参数。

2024-08-21 00:39:26 795

原创 C++(六)内存管理

1.动态申请内置类型的数据时new/malloc除了用法上面,其他方面没什么区别2、动态申请自定义类型的数据new/malloc除了用法上面,还有一个中大区别,new和delete会调用构造函数初始化,析构函数清理。

2024-08-20 22:46:33 285

原创 C++类和对象(附录)

类和对象 章节小实验。

2024-08-20 17:19:25 233

原创 C++(五)类和对象part 3

之前实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表。具体写法:(在构造函数后)出现一次列表初始化总结:每个构造函数都有初始化列表:(只是显示写和不写的区别)每个成员都要走初始化列表1、在初始化列表初始化的成员 (显示写)2、没有在初始化列表的成员 (不显示写)a、声明的地方有缺省值用缺省值b、没有缺省值的情况:x:内置类型,不确定,看编译器,大概率是随机值y:自定义类型,调用默认构造,没有默认构造就编译报错。

2024-08-13 02:08:45 854

原创 C++ (四) 类和对象part 2

1.类中内置类型需显性实现构造函数,编译器不处理2.类中自定义类型,可不显性实现构造函数,编译器会自动调用此自定义类中的构造函数3.析构函数详解1、一般情况下,有动态申请资源,就需要显示写析构函数释放资源2、没有动态申请的资源,不需要写析构3.需要释放资源的成员都是自定义类型,不需要写析构4.拷贝构造函数4.1拷贝构造的概念拷贝构造函数:如果一个构造函数的第一个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是一个特殊的构造函数。

2024-08-10 22:41:40 551

原创 C++ (三) 类和对象part 1

在以往学习的C语言中,有结构体定义,在C++中把结构体升级成了类,并引入新的关键字关键字:class(类)class和struct在内存对齐方面基本相同:1.第一个成员在与结构体偏移量为0的地址处。2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。注意:对齐数=编译器默认的一个对齐数 与 该成员大小的较小值。Vs中默认的对齐数为8结构体总大小为:83.结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。

2024-08-08 19:30:19 603

原创 C++ (二)

关键字:inline内联函数的特点:1)适用于短小且频繁调用的函数2)inline对于编译器仅仅只是一个建议,最终是否成为内联,编译器自己决定(一般 如果函数较长或者有递归迭代得会被编译器判为普通函数)3)改善宏可读性差、不能调试的缺点。

2024-08-07 23:12:49 140

原创 C++(一)

为解决c中命名冲突问题C++中引入:命名空间(关键字:namespace)后面跟命名空间的名字,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,不同的域(可以理解成空间)。C++中域分为函数域影响的是编译时语法查找一个变量/函数类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。C++标准库都放在一个叫Std(standard)的命名空间中。

2024-08-07 22:52:38 1041

空空如也

空空如也

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

TA关注的人

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