![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 83
TZC⑥
这个作者很懒,什么都没留下…
展开
-
C++11
列表初始化{}的初始化问题C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号(=),也可不添加#include<iostream>using namespace std;class Date{public: Date(int year = 0, int month = 1, int day = 1) :_year(year) , _month(month) , _day(day) {原创 2022-03-07 20:36:24 · 771 阅读 · 16 评论 -
室友竟只在2021的最后一天就学会了哈希表
哈希概念通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素哈希方法中使用的转换函数称为哈希(散列)函数,构造出来的结构称为哈希表(Hash Table)(或者称散列表)映射方式1.直接定址法用数组与数据的相对映射或绝对位置建立索引关系,此时增删查改时间复杂度O(1)缺陷:1.如果数据范围很大,直接定制法会浪费大量的空间2.不能处理字符串,浮点数等数据,无法被拿来作为数组的索引适用于:整数,并且数据集中的情况2原创 2021-12-31 16:51:06 · 3530 阅读 · 24 评论 -
进程的控制
进程创建fork深挖对于返回值:为何要给子进程返回0,给父进程返回子进程的pid?父进程:子进程为1:n的关系,父进程创建子进程通常是要执行任务的,这时候,存在多个子进程执行不同的任务,父进程就需要区分不同的子进程所以就会通过返回子进程pid的方式返回给父进程对于fork分配新的内存块和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子进程到系统进程列表当中fork返回,开始调度器调度所以在fork内部,就已经出现了两个执行流,这样才会返回两个返回值fork之后谁先运原创 2021-12-14 20:03:28 · 754 阅读 · 16 评论 -
进程与环境变量
冯诺依曼体系结构可以看出:1.站在硬件角度和数据层面上,CPU只和内存“交流”,外设只和内存"交流"2.数据要处理必须预装载到内存,局部性原理,这个过程由OS完成这就回答了为什么程序运行之前要加载内存?程序本质上是文件,位于硬盘(外设)上,想到CPU运行,必须经过内存操作系统操作系统:软硬件资源的管理者操作系统不会和软硬件打交道,通过驱动拿到资源(数据)操作系统要对拿到的数据管理必须先描述再组织描述:用结构体来对其描述组织:选用适宜的数据结构存储所以操作系统对软硬件的管理原创 2021-12-09 14:42:53 · 919 阅读 · 13 评论 -
map,set底层数据结构红黑树
红黑树的概念①红黑树与AVL树一样都是平衡二叉搜索树②通过从任一节点到其叶子节点的所有路径上都包含相同数目的黑节点的限制,确保没有一条路径会比其他路径长出俩倍,因而是接近平衡红黑树的性质每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的(没有连续的红结点)对于每个结点,从该结点到其所有后代叶结点的简单路径上,包含相同数目的黑色结点每个叶子结点都是黑色的(此处的叶子结点指的是空结点)红黑树的极端情况针对第三点我们很容易想到两种极端情况原创 2021-12-03 16:53:13 · 2544 阅读 · 9 评论 -
Linux进程信号
信号概述像上课铃声这种信号,我们识别接收后,知道该上课了,这是我们后天学习养成的默认意识。在进程收到信号后,它是知道该怎么做的 ,程序员内置了默认的处理行为进程的运行跟信号的产生属于异步关系:1.进程不一定立刻去处理已经到来的信号2.如果进程在处理优先级更高的事情,可以暂时不处理信号,等到合适的时候再处理。3.会用某种方式记录下已经到来的但没处理的信号,以便在空闲的时候处理这些信号异步:二者之间互不影响同步:二者之间相互影响处理信号的三种方式:1.默认行为2.提供信号处理函数,要求原创 2021-11-13 20:08:02 · 1959 阅读 · 12 评论 -
C++多态二三事
1. 多态的概念多态:多种形态;不同的对象完成同一件事情会发生不同的行为,产生不同的结果多态包括静态的多态:函数重载(静态指编译时)动态的多态:父类指针或引用调用重写了的虚函数(是指运行时)2.多态的定义和实现构成多态还需要两个条件:必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数:即被virtual修饰的类非静态成员函数称为虚函数静态没有this指针,无法形成切片,那就无法调用派生类重写了的虚函数,无法形成多态虚函数是原创 2021-10-29 19:56:20 · 1007 阅读 · 8 评论 -
C++继承二三事
继承定义继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类继承是is a的关系,子类(派生类)继承了父类(基类),子类拥有和父类一样的属性:所以子类可以使用父类的方法,父类的成员变量也拷贝到了子类![在这里插入图片描述](https://img-定义格式 派生类 继承方式 基类 class subclass : public parentcla原创 2021-10-26 14:30:05 · 418 阅读 · 6 评论 -
迭代器失效问题
迭代器指针失效的两种情况:案例一(insert):情况一:意义变了在Linux环境下:示例:在vs2019环境下:可以看到pos是在插入30之前给的值,插入后,可以认为pos就失效了,在vs2019环境下,插入后pos的意义变了,pos指向的是30,不再是3,导致erase(pos)没有达到删除3的目的,程序崩溃而在Linux环境下,“正常运行”,因为不同库的所执行的标准不同,检查机制也不一样,vs检查比Linux严格情况二:野指针只讲程序又插入了一个数据6,程序也崩了,但这原原创 2021-10-09 15:26:23 · 571 阅读 · 5 评论 -
Linux环境基础开发工具使用
Linux 软件包管理器yum软件包和软件包管理器, 就好比手机上的"App" 和 “应用商店”所以yum的作用主要是在Linux下安装软件注意:关于 yum 的所有操作必须保证主机(虚拟机)网络畅通yum的三板斧查看软件包通过yum list 命令可以罗列出当前一共有哪些软件包我们可以使用grep命令筛选出我们需要的包例如:yum list | grep lrzsz软件名"lrzsz"“x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择原创 2021-10-08 14:43:00 · 6125 阅读 · 6 评论 -
Linux的权限问题
这里写目录标题Linux下用户权限权限提升问题su命令:Linux权限管理①文件访问者的分类②文件类型③权限属性文件权限值的表示方法文件权限的修改chmod关于目录权限对拥有者和所属组的修改默认权限值修改初始权限值:粘滞位Linux下用户权限Linux下有两种用户:超级用户(root)、普通用户:超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”权限提升问题su命令:格式:su [-][用户名原创 2021-10-04 17:36:50 · 663 阅读 · 6 评论 -
C++类与对象
类的介绍:1.类的简单介绍class className{ // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。2.类的作用域类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符 指明成员属于哪个类域。示例:#incl原创 2021-09-30 10:47:46 · 440 阅读 · 17 评论 -
集合背后的数据结构(一)
集合介绍可以看到集合类的基本接口是Collection接口,而Collection接口继承了Iterable接口:这个接口内部只有一个方法**public abstract Iterator iterator();**而这个迭代器对象依次访问集合中的元素接下来让我跟你们介绍一下迭代器Iterator:hasnext()方法:集合中有元素的时候返回true,否则返回false;next()方法:首先迭代器指向第一个元素的前面的空白部分,调用next后迭代器越过下一个元素,并且返回这个元素的引用;原创 2021-09-24 16:41:03 · 505 阅读 · 11 评论 -
深入解析字符串的“==“比较原理
String的比较如果我们用equals方法从原码可以看出,比较的是字符串的内容public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject;原创 2021-09-15 21:25:24 · 1572 阅读 · 8 评论 -
动态内存通讯录
contact.h#pragma once#define _CRT_SECURE_NO_WARNINGS#include<stdlib.h>#include<stdio.h>#include<string.h>#define MAX_NAME 20#define MAX_SEX 10#define MAX_TELE 12#define MAX_ADDR 30#define MAX 1000#define DEFAULT_SZ 3#define IN原创 2021-07-20 21:25:05 · 585 阅读 · 3 评论 -
字符函数和字符串函数
字符函数和字符串函数长度不受限制的字符串函数1. strlen(求字符串长度,直到'\0'停止)2. strcpy(拷贝字符串)3. strcat(字符串追加)4.strcmp(字符串比较)长度受限制的字符串函数1. strncpy(拷贝num个字符从源字符串到目标空间)2. strncat(追加num个字符)3.strncmp(比较前num个字符)4. strstr(字符串的查找)5.strtok(分割字符串)6.strerror(返回错误码,所对应的错误信息)长度不受限制的字符串函数1. strle原创 2021-07-16 11:15:15 · 124 阅读 · 1 评论