C++
文章平均质量分 92
TZC⑥
这个作者很懒,什么都没留下…
展开
-
网络套接字编程
端口号端口号(port)是传输层协议的内容端口号是一个2字节16位的整数;一个端口号只能被一个进程占用端口号用来标识一台主机内的唯一一个进程,公网IP标识全网内唯一一个进程,ip+port:标识全网内的唯一一个进程一台机器当中一个端口号可以唯一标识一个进程。而一个进程可以占用多个端口进程pid与port的关系在OS中,并不是所有的进程都需要进行网络通信,pid标识系统里的一个进程,port标识进行网络通信的一个进程pid是系统级别的概念,port是网络的概念网络字节序内存中的多字节数原创 2022-03-14 20:13:55 · 4161 阅读 · 23 评论 -
C++智能指针
RAIIRAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源我们实际上把管理一份资源的责任托付给了一个对象。这种做法有两大好处:1.不需要显式地释放资源2.采用这种方式,对象所需的资源在其生命期内始终保持有效典型的应用有智能指针和lock_guard智能指针智能指针除了具有RAII特性外,还需要像指针原创 2022-03-10 11:06:49 · 933 阅读 · 25 评论 -
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 评论 -
map,set底层数据结构红黑树
红黑树的概念①红黑树与AVL树一样都是平衡二叉搜索树②通过从任一节点到其叶子节点的所有路径上都包含相同数目的黑节点的限制,确保没有一条路径会比其他路径长出俩倍,因而是接近平衡红黑树的性质每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的(没有连续的红结点)对于每个结点,从该结点到其所有后代叶结点的简单路径上,包含相同数目的黑色结点每个叶子结点都是黑色的(此处的叶子结点指的是空结点)红黑树的极端情况针对第三点我们很容易想到两种极端情况原创 2021-12-03 16:53:13 · 2544 阅读 · 9 评论 -
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 评论 -
C++类与对象
类的介绍:1.类的简单介绍class className{ // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。2.类的作用域类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符 指明成员属于哪个类域。示例:#incl原创 2021-09-30 10:47:46 · 440 阅读 · 17 评论