c++
文章平均质量分 89
Achlorine
脚下的路更重要,我要开始与自己赛跑了。
展开
-
linux操作系统网络编程套接字(实现一个udp通讯demo)
面向字节流(Stream-Oriented):特点: 面向字节流是一种流式的数据传输方式,数据被视为一连串的字节,没有明确的分割单位。传输的数据流是连续的,不会有明确的消息界限。应用场景: 典型的面向字节流的例子是TCP(Transmission Control Protocol)协议。在TCP连接中,数据被视为字节流,而不是消息的集合。应用程序可以读取任意大小的数据块,而不受底层网络数据包的限制。原创 2024-01-26 14:44:37 · 1545 阅读 · 0 评论 -
Linux操作系统IPC之—SYSTEM V共享内存
共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。原创 2024-01-22 21:34:18 · 382 阅读 · 0 评论 -
进程间通信之利用命名管道进行通信
命名管道(Named Pipe),也被称为FIFO(First In, First Out),是一种在Unix和Unix-like操作系统中用于进程间通信的特殊文件类型。它允许不相关的进程通过文件系统中的路径名进行通信。原创 2024-01-19 13:02:53 · 1305 阅读 · 0 评论 -
滑动窗口经典入门题-——长度最小子数组
那么我们可以想一下我们可以使用两个指针一个是left一个是right当left和right之间的元素和小于target的时候就让right一直向右移动,当right和left之间的元素大于等于target的时候我们更新一下此时的长度是否为最短,然后再让left左移查看此时right和left的元素之和是否大于等于target如果是就继续上一步操作即继续更新我们的最短长度,一直到right和left之间的数据小于target为止之后再让right指针右移即可。通过调整这两个指针,可以滑动窗口在序列上移动。原创 2024-01-18 22:53:18 · 782 阅读 · 0 评论 -
力扣电话号码的组合
首先呢我们可以先看一下假如说是23这两个数字的话2代表的是abc 3代表的是def,那么我们以此为列的话得出当首字符是a的时候组合就是ad,ae,af同样的b和c也是如此在这里我们可以看到a组合完毕之后我们还需要将b和c组合也给列出来,那么也就是说我们可以利用函数递归这样一个特性去逐步的遍历他们每个字符串,也就是说最外层是一个for循环然后for循环里面是一个函数递归,相当于又是一个循环外面的循环负责遍历2这个数字代表的字符内层函数遍历则是负责遍历3所代表的每个字符,那么我们来进行一下代码实现吧。原创 2024-01-16 20:57:37 · 402 阅读 · 0 评论 -
进程的概念之进程的状态
S状态,s状态也叫做可唤醒睡眠状态那么此时我们就比较容易理解了,他和T状态是有不同的比如说T状态的进程你是不能唤醒的但是S状态的进程是可以被唤醒的比如说父进程创建了一个子进程并等待子进程结束,而子进程进入一个睡眠状态比如说sleep(10)等待10秒钟。进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。为了弄明白正在进行的进程是什么意思,究竟怎样才算正在运行的进程,比如说一个人的状态可能在工作也有可能在睡觉,那么我们进程也是也有着运行状态休眠状态。原创 2024-01-16 17:38:37 · 1069 阅读 · 3 评论 -
左值引用右值引用
首先关于左值和右值我们的第一印象左边的是左值右边的是右值(这里的左右值,指的是等号的左右)但是实际上我们并不这样区分或者说这样子区分是不太准确的左值是一个表示数据的表达式(比如说变量名和解引用的指针),我们可以获取它的地址+对它赋值,左值可以出现赋值符号的左边也可以出现在赋值符号的右边,而右值不能出现在赋值符号的左边但是被const定义的左值不能出现在等于号的左边不能给他赋值但是可以取他的地址,因此我们可以通过能否取地址来判断左右值。可以取地址的是左值不可以取地址的是右值。原创 2023-10-13 00:54:45 · 64 阅读 · 0 评论 -
AVL树(平衡二叉搜索树)
首先先说一下AVL名字的由来,AVL的名字来自于它的发明者G. M. Adelson-Velsky 和E. M. Landis,也就是这两位来自俄罗斯的大佬,那么我们为什么要学习AVL树呢?那是因为我们平常用的二叉搜索树在一些极端情况下它的查找会变成o(N)的时间复杂度,也就是斜二叉树的情况,他们发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。原创 2023-09-07 23:37:19 · 71 阅读 · 0 评论 -
c++异常
实际生活中,很多公司都会定义自己的异常体系进行规范的异常管理否则的话如果放任不管的话那么就会变成一百个读者就会有一百个哈姆雷特那样子,这样的话对于上层的管理者函数的调用者就没法玩了,所以实际生活中都会定义一个继承体系这样子的话大家抛出的都是继承的派生类对象,捕获一个基类就可以了。异常总体而言,利大于弊,所以工程中我们还是鼓励使用异常的。另外OO的语言基本都是用异常处理错误,这也可以看出这是大势所趋。原创 2023-08-29 17:24:33 · 42 阅读 · 1 评论 -
全网最全的c++继承包含了菱形继承,虚拟继承,虚基表等内容
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。列如以下的代码就是一个简单的继承关系。上面呢我们可以看到B是子类也叫派生类,A是父类也叫基类,public是继承方式。原创 2023-08-23 14:45:07 · 55 阅读 · 0 评论 -
istream和ostream
c++语言呢是面向对象的语言cin和cout这两个对象是更加的贴近面向对象编程的,不过呢由于缓冲区的问题导致我们再写代码 的时候我们的cin和cout的效率可能不如c语言的printf和scanf这一点呢是有办法的我们只需要禁用缓冲区就可以了。也就是加一个这样子的代码就可以了。cin.tie(0);原创 2023-08-21 20:34:56 · 441 阅读 · 0 评论 -
利用前缀和求解leetcode的1749题求任意子数组的和的绝对值的最大值
今天给大家分享一道题目,是来自力扣的第1749题 链接:题目。这个题目考察的是动态规划但是我用的是前缀和进行求解。这个方法使用的是前缀和不过标签中说可以使用动态规划但是认为前缀和的方法呢也比较合适因为他的时间复杂度也只需要O(n)面对这个10的5次方的测试用列是非常够用的。原创 2023-08-18 17:15:43 · 53 阅读 · 1 评论 -
c++模板进阶
一个程序(项目)是由若干个源文件共同实现而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】4. 模板会导致代码膨胀问题,也会导致编译时间变长5. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2023-08-18 00:25:14 · 72 阅读 · 1 评论 -
全网最全的c++模板No.1
class 类模板名// 类内成员定义举个列子:动态数组public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)原创 2023-08-17 17:43:24 · 66 阅读 · 1 评论 -
简要——类和对象
第一种:类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加 (类名::)int main()person stu;stu.ccin();return 0;//.h文件public:private:int score;第二种就是不管是定义还是实现都在 .cpp 文件中public:private:int score;stu.ccin();return 0;原创 2023-05-11 22:28:21 · 47 阅读 · 0 评论 -
十分钟教会你链表
链表是一种比较基础的结构,用链表实现增删比数组方便许多只不过实现起来比数组困难那么今天我们就来看看链表如何实现。总的代码我给各位拷贝出来type x;}sl;return;代码最终实现的结果呢如图如果各位有什么不理解的地方也可以直接把代码拷贝过去进行试验。原创 2023-02-27 14:39:01 · 69 阅读 · 0 评论