- 博客(77)
- 收藏
- 关注
原创 C++进阶:哈希(1)
在C++库中,除开map与set这两个关联式容器外,还存在着另外两个此类容器,unordered_set,unordered_map。unordered中文释义为无序的,这也正是这一对容器使用时的表征特点,这一对容器分别对应set与map,即K模型与KV模型的存储数据结点。那么,除开使用迭代器遍历时,其内存储数据无序外,这一对容器与map与set容器有何不同,为什么要在已有map与set的情况下,再向库中加入这一对乍看功能冗余且劣于原本map与set的容器呢?我们来看下面的一组对照试验。
2024-05-13 22:27:08 1076 1
原创 C++进阶:map与set简单自实现
/结点结构Red,BlackT _kv;,_kv(kv),_col(Red){}//树结构public://查找//插入private:KeyOfT con;
2024-05-09 19:34:37 472
原创 Linux学习:文件描述符fd
从上面我们新学习到的Linux系统文件相关系统调用接口,可以看出其对文件进行的一系列操作都是通过open接口的返回值fd来实现的,通过fd来找到对应的文件进行写入,读取,关闭等操作。fd是一个整形数据,其被称作文件描述符,可是这一个整形数据是如何标识表明不同文件的呢,打开不同文件时其的值又有什么不同吗?close(fd1);close(fd2);close(fd3);close(fd4);close(fd5);return 0;
2024-04-23 16:55:04 819
原创 Linux学习:进程(5)进程控制
在前面的学习中,我们所创建的子进程其数据与代码都继承于父进程,只能通过fork返回值pid分流的方式可以让父子进程执行不同的代码块,那么,有没有一种方式让子进程可以执行不同父进程其他程序的代码呢?接下来,就让我们学习一种新的进程控制方式,进程替换,它通过将其他程序的代码与数据替换入子进程代码段于数据区,来让子进程可以执行其他程序的代码。Linux操作系统中,通过exe*系列的函数接口来实现进程替换,此类进程替换的函数与接口一共有7个。
2024-04-17 11:58:48 625 1
原创 Linux学习:进程(3)与 环境变量
在现实生活中,各种事物的优先级代表着这些事物所要被执行的先后顺序。而在计算机中对于进程来说,也是如此,进程的优先级决定了其被CPU执行的先后顺序。当我们去谈论优先级的概念时,就代表有了需要我们去讨论优先级的前提与场景,进程的优先级决定着进程被CPU的执行顺序。而当我们提及到进程的优先级时,就一定代表着CPU不能够第一时间内处理所有需要被进行的进程,或者可以说CPU的资源无法满足支持可以第一时间处理每个进程,所以,此时就需要将各个进程进行排队等待。
2024-03-28 23:48:06 725
原创 Linux学习:进程(1)
程序:存储在磁盘(外设)中的二进制文件程序想要运行就必须加载到内存中让CPU执行,程序只是一段段二进制指令,操作系统如何识别不同的程序,如何对各种加载到内存中需要运行的程序进行管理。单纯只有程序是无法正常运行,不能被称之为程序的。操作系统对整个计算机的管理都是采用了先描述再组织的方式,程序也要有其对应的属性信息,操作系统通过对其属性信息的管理从而达到间接管理程序的目的。
2024-03-24 20:39:58 710
原创 C++初阶:string类相关练习题
题目信息:字符串最后一个单词的长度int main()string str;//遇到' '字符不停读取,一次读取一行int i = 0;cur--;i++;cout
2024-03-19 13:31:27 486
原创 Linux学习:基础开发工具的使用(2)
Makefile为我们在项目所在创建的一个文件,这个文件用来记录需要编译项目文件间的依赖关系与依赖方法。make为一条指令,当我们执行此条指令时,就会在当前目录中检索Makefile文件中的内容,按照从上向下的顺序,根据编辑好的依赖关系执行文件间的依赖方法。
2024-03-17 16:19:11 867
原创 C++初阶:模板初阶
我们在之前类与对象的学习中,学习过类的默认成员函数,其中构造函数的函数名为类的名称,那么类模板的构造函数的函数名应该是什么呢。构造函数的名称为类名,而类模板[类名]为类型名,因此,构造函数名与普通类相同。类模板的成员函数声明与定义分离方式: 必须在同一文件下,否则报错 分离出的定义部分,必须也要加声明模板参数的声明,声明类域时要使用类型名,具体如下class [类名]public://函数声明[返回值] [函数名]();
2024-03-15 11:11:31 1020
原创 C++初阶:内存管理
new/delete开辟自定义类型的动态空间,会自动调用自定义类型的构造与析构函数class Aprivate:int _a;return 0;开辟自定义类型空间的初始化方式A aa1;A aa2;A aa3;
2024-03-13 23:05:44 865
原创 算法练习:二分查找
题目信息:在排序数组查找元素的第一个与最后一个位置思路:向符合条件位置不断推进public://数据为空,特殊处理//左端点//落到左区间left = 0;//右端点//落到右区间left = mid;
2024-03-12 22:21:14 953
原创 Linux学习:基础开发工具的使用(1)
补充:打开文件时,光标会在上一次关闭文件时光标停留位置。(切换到替换模式,此模式下输入均视为替换操作)
2024-03-12 13:28:53 1022
原创 C++初阶:类与对象(尾篇)
执行结果:使用成员变量_a初始化成员变量_b时,_a还没有被初始化。支持上述操作的原因,是因为数据或者变量。类域::静态成员函数。
2024-03-12 00:01:33 954
原创 算法练习:同向双指针(滑动窗口)
1> 获得子串使用string的substr接口,hash.count(字符) 判断hash表中是否有这个字符,对照表中没有,那么记录表中不创建。注:循环逻辑顺序链条,滑动窗口区间(开闭)优化1:(判断方式改为两个哈希表)优化2:(计数:判断优化)
2024-03-10 14:33:07 747
原创 C++初阶:类与对象(中篇)
构造函数在整个对象的声明周期中会自动调用,且调用一次构造函数只负责初始化不会开辟空间构造函数的形式: 函数名与类名相同 无返回值 实例化对象会自动调用相应的构造函数 构造函数可以重载默认生成的构造函数class Datepublic:int _year;int _month;int _day;Date d1;d1.Print();_top = top;
2024-03-09 19:25:27 906
原创 Linux学习:权限
在使用操作系统时,我们是以用户的身份登录的,不同的用户有在操作系统享有不同的权限和资源,以此为标准用户可以分为两类: root(超级用户,管理源) 普通用户权限不能凭空而存在,必须依托于已有的事物与其功能,当我们凭借权限做出某个操作时,提及权限的前提便是这个操作,动作已经存在,而权限是划分能或者不能的指标。当某个事物有着某些功能时,也往往表示着它会有哪些权限,文本文件是存储信息的文件,它可以进行信息的读,写,查看这也就意味着它存在着读,写,看的权限。
2024-03-09 11:51:46 1159
原创 C++初阶:类与对象(初篇)
定义方式:类名(关键字Class + 类名)+ 类体(成员变量 + 类方法 + 访问限定符)class [这个类的名称]public://类的成员变量private://类方法补充:C++中成员变量命名方式注:类的内部方法可以直接访问类的成员变量class Dateprivate:int year;int month;int day;public://无法正常赋值上述操作会导致命名冲突,编译器无法识别,发生错误,所以建议类的成员变量前都加下划线class Date。
2024-03-08 10:01:55 912
原创 C++初阶:初识C++
相对于C语言面向过程的编程语言,C++在继承C的基础上进行发展与补足,为C语言添加了面向对象方面的内容(类与对象,继承多态,模板)面向对象与面向过程:如果将编程比作洗衣服,那么面向过程的编程就好比我们自己一步一步的进行衣物浆洗(接水,放入洗衣液,浸泡,手搓),而面向对象编程就是洗衣机我们只用将衣服放入,倒水倒洗衣液,具体的细节我们无需关系。总的来说,C关心得是过程,而C++只用关注对象与对象及其他们的关系。
2024-03-06 15:59:19 1003
原创 算法练习:双指针
我们将每次运算得出的结果视为结点,平方和的运算步骤视为链表的一步。那么,上述问题就可以理解为链表循环问题。(是否为只有1的环)注: 无论数n是否为快乐数,其进行快乐数的判断逻辑一定。思路1:求出所有的容积,然后在其中选出最大(暴力求解)只需记录每组中最大的容积,算法时间复杂度优化为O(n)
2024-03-05 17:03:21 984
原创 初阶数据结构:排序(学习笔记)
算法稳定性的判断标准:数据中相同数据在排序后,他们的相对位置是否变化。接下来,我们进行这些排序的学习。一次遍历选出最大值与最小值。
2024-03-05 12:57:40 875
原创 初阶数据结构:二叉树(补充扩展)
当数据量很大时,且为乱序,数据无法一下全部加载到内存中,所以整体排序无法得出最大或最小的前K个数,那么,如何快速得出前K个最大/最小数。思路:我们先建堆,然后将堆顶(堆顶元素总是为最大或最小)的元素与尾部元素交换,size–,然后向下调整,直至堆为空。3. 思路:遇到与配对子树的根节点相同的结点即开始配对,直至遍历完整个树。等比数列求和,得需调整n - log(n + 1),时间复杂度为O(n)在前面的学习中,我们已经了解到,二叉树的结构由三部分组成。先于数据首部建一个大小为K的。思路:使用层序遍历,
2024-03-04 12:55:14 925
原创 Linux学习:初识Linux
大部分的硬件都由其的读写方法,根据作用不同,有些为空,键盘有写方法,读方法为空。:在树这一数据结构的学习中,我们知道根结点为没有父亲结点(父亲结点为其自身)的结点。:每个目录下都存在着两个隐藏目录,在我们使用指令ls -l查看目录中的文件信息时,我们会发现名为。此条指令的含义为将原本向显示器输出的内容,写入到一个指定文件中(当文件不存在,新建一个文件)指令意义:显示当前目录下所有可见文件与目录的信息(文件类型,大小,文件名等)注:目录中存在着我们正常情况下不可见的隐藏文件与目录,隐藏文件的文件名都以。
2024-03-03 20:07:33 2347 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人