自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spdlog的安装与使用

------------------构造函数-------------------//创建日志器(logger):可以有名字,可以指定输出到哪(比如文件、控制台)logger(std::string 日志器名字);logger(std::string 日志器名字, sink_ptr 日志输出目标)logger(std::string 日志器名字, sinks_init_list 多个输出目标)-------------------日志器设置-------------------

2025-07-24 10:38:24 612

原创 gtest使用

gtest 是 Google 出的一个 C++ 代码测试工具,可以让我们在程序中写很多测试用例,运行时会自动检测代码,发现bug会直接告诉我们哪里错了,比如写了一个排序函数,需要测试各种输入下的输出对不对,我们就可以使用它。

2025-07-22 22:40:17 641

原创 gflags使用

在 flags_def.cc 定义 --port 参数,在 main.cc 中声明并使用它,实现跨文件共享命令行参数main.cc//声明return 0;编译时链接两个文件一起:运行代码1 (打印默认值)./main8080运行代码2(打印传入值)1234。

2025-07-22 22:19:02 256

原创 基础工具安装

注意:gdb安装出现问题可以考虑更新国内源,网页搜索Ubuntu22.04更换国内源即可。

2025-07-22 21:50:16 194

原创 std::bind 的核心思想就是 “参数固定化“(c++11)

std::bind,通过提前绑定参数,可以把一个原本需要参数的函数,"改造"成一个无参的函数对象。这就是为什么它能匹配。

2025-04-17 10:28:51 331

原创 仿函数c++

构造了一个仿函数,用于判断数字是否大于。是仿函数调用,行为和普通函数一样。使用该仿函数查找符合条件的元素。仿函数用于处理事件回调。是一个仿函数,重载了。

2025-04-16 22:54:29 308

原创 配置语法错误提示

2025-04-16 21:12:37 115

原创 pipe匿名管道实操(Linux)

全称为 "error number"。它由系统或标准库函数在操作失败时设置,用于指示具体的错误原因。能更清晰地表达“这是 C++ 代码”的意图,并可能在未来的标准中更好地支持命名空间隔离。更安全,因为它可以防止缓冲区溢出(Buffer Overflow)C++ 标准库对 C 标准库的头文件进行了重新封装,采用无。是 C 标准库中的一个格式化输出函数,用于。它是静态计算的,不会在运行时影响程序性能。),以区别于 C 的传统头文件(如。未输出的内容会被强制写入)。(按注册的逆序执行)。

2025-04-10 16:57:36 1227

原创 实操(环境变量)Linux

综合刚刚所说为什么执行pwd、ls这些命令可以不带路径,原因是因为它们在特定的环境变量所指明的若干路径当中,Shell会从PATH环境变量(一串用冒号分隔的目录路径)中从左到右依次搜索这些目录,寻找与命令名称匹配的可执行文件,找到就自动执行了,不用带路径,而我们自己写的可执行程序对应的路径是自己的路径,没有在环境变量里,所以执行时无法直接找到我们的可执行程序,必须要用户指明出他对应的路径。还有另一种方式,把可执行程序拷贝到/usr/bin路径下(sudo cp -rf myproc /usr/bin)

2025-04-10 10:28:48 592

原创 实操(等待子进程)Linux

获取当前进程的PID(进程ID)、PPID(父进程ID):使当前进程休眠指定秒数(可能被信号中断)。:终止当前进程,并返回状态码给父进程(通过获取):等待指定子进程的状态变化(如终止或暂停):检查子进程是否正常退出(通过exit或return:提取子进程的退出状态码(exit或return的值)。

2025-04-10 10:22:14 345

原创 实操(多线程特点、健壮性降低、缺乏访问控制)Linux

makefile(添加原生线程库)thread.cc。

2025-04-06 20:18:15 466

原创 实操(不可重入函数、volatile、SIGCHLD、线程)Linux

为什么会导致节点丢失内存泄露?main函数在执行insert,但是没执行完就被信号中断了,又进了这个函数里,所以这个insert函数在不同的执行流中,同一个函数被重复进入,如果没有问题,该函数被称为可重入函数,如果有问题,该函数被称为不可重入函数。

2025-04-06 18:03:08 701

原创 实操(进程状态,R/S/D/T/t/X/Z)Linux

比如有一天你去一个地方跑步,跑着跑着,突然看到前面有一个人倒在地板上一动不动,这个时候你拨打了110、120,就在旁边等着救护人员的到来,警察来之后,第一件事情是封锁现场,让法医先确认这个人的死因是什么,确认这个人是自然死亡的,警察就会通知家属,让他们去处理,拉到火葬场等等,刚刚这个场景,人倒在地上没有被立即销毁,当警察检查这个人的状态时,这个人的状态就叫做僵尸状态,为什么要让他处于僵尸状态?暂停进程(kill -19),查看状态(ps ajx | grep mytest | grep -v grep)

2025-04-04 20:34:33 1180

原创 查看进程,认识fork

getpid。

2025-04-03 17:59:04 335

原创 /r,倒计时代码

memsetn。

2025-04-03 11:26:20 290

原创 注释容易混淆?修改vscode注释颜色,自定义你的专属颜色

【代码】注释容易混淆?修改vscode注释颜色,自定义你的专属颜色。

2025-03-27 11:15:30 922

原创 nano 是一个简单易用的命令行文本编辑器,适合在终端中快速编辑文件。它比 vi 或 vim 更容易上手,特别适合初学者

nanonanonanonanonanonano启动nano顶部显示文件名和编辑器版本。底部显示常用快捷键(表示Ctrl键)。nano的快捷键通常以Ctrl键(显示为)或Alt键(显示为M-)开头。

2025-03-23 22:56:10 766

原创 如果你的 man 手册内容也和别人不一样,或者不全或缺失,可以通过更新和安装完整的手册页来解决问题。文章有具体步骤

如果某些命令的手册页仍然缺失,可能是因为这些命令来自未安装手册页的第三方软件包。等包,可以解决手册页不全或缺失的问题。如果问题仍然存在,可以使用。如果你需要开发者相关的手册页(如 C 库函数),可以安装。查找并安装缺失的手册页对应的包。如果需要 POSIX 标准的手册页,可以安装。Ubuntu 系统中,手册页通常包含在。如果显示完整的手册内容,说明问题已解决。查找手册页对应的包,例如查找。更新手册页数据库即可。

2025-03-23 22:36:35 343

原创 cal 并不是一个独立的包,而是包含在 ncal 或 bsdmainutils 包中。在 Ubuntu 系统中,cal 命令通常已经预装,但如果没有预装,你可以通过安装 ncal 或 bsdmainu

命令通常已经预装在 Ubuntu 系统中。如果显示当前月份的日历,说明安装成功。如果未安装,可以通过安装。未安装,可以通过安装。不可用,可以尝试安装。

2025-03-23 22:25:22 244

原创 如何设置sudo权限

只有管理员用户(通常是安装系统时创建的第一个用户)默认拥有。文件时要小心,错误的语法可能导致系统无法使用。权限,需要联系系统管理员为你添加权限。

2025-03-23 19:36:10 822

原创 牛客网【模板】二维差分(详解)c++

此时(x1,y1)加完K后,再对差分数组求矩阵和,除了会加上蓝色的K还会加上红色的K,是要消除这个影响的,因为我们想达到的效果只是(x1,y1)到(x2,y2)的区间里面加K,解决这个问题只需要在(x2+1,y1)(x1,y2+1)位置上减去K就消除了影响,还有一个问题是在它们消除影响的区域有一块部分重合,也就是说这两个位置-K的时候,会让一个区域重复减了两次,此时我们在重合的地方写一个+K就可以了,整个操作只会影响红色的部分。作用:快速处理“将二维数组中,某一个子矩阵统一加上或减去一个元素”的操作。

2025-03-23 18:03:17 506

原创 洛谷 P3406 海底高铁(详解)c++

看输入输出案例,上图有9个车站,每个车站之间都有一个铁路,要经过10个城市,分别是先从3到1,1到4,4到1,依此类推,从3到1不会直接从3顺移到1,是从3到2,再到1,所以从1到3之间,这一段铁路全都是需要乘坐一次的,接下来从1到4,是1先到2乘坐一次,2到3乘坐一次,3到4乘坐一次,4到1也是同理,接下来的数据表示的是每段铁路的abc的值,第一条铁路有属于它的abc,第二条铁路也是,最终我们要计算在它这样的行程里最小花费是多少就可以了。1:从2到3需要购买一份车票,从3到2也要购买一份车票。

2025-03-22 22:52:58 985

原创 牛客网【模板】差分(详解)c++

LL a[N];LL f[N];int n, m;i <= n;

2025-03-20 10:24:11 1190

原创 洛谷 P2280 [HNOI2003] 激光炸弹(前缀和详解)c++

当我们想要在这个矩阵中确定一个正方形的时候,如果边长已知,只要知道正方形右下角的坐标(x2,y2)就可以根据它的边长m推出左上角的下标(x2-m+1,y2-m+1),因为x2-x1+1=m,所以把x1移到右边,就变成x2-m+1=x1,因此枚举正方形的时候,只需枚举右下角或者左上角,为了一会和我们的二维前缀和对应,枚举右下角(x2,y2)即可,两层for循环就可以搞定,第一层for循环枚举x2,第二层for循环枚举y2,再通过计算得出左上角的下标,这就可以枚举出所有边长为m的正方形。

2025-03-18 15:23:32 828

原创 洛谷 P1115 最大子段和(前缀和详解)c++

用 f [ i ] 减去 [1, i - 1] 中所有前缀和的最小值即可,假设现在 i 是 5,用1到 i 的区间和减去计算的前缀和中最小的值,就是以 i 为结尾的最大区间和了,再把下标6的位置求出来,7的位置求出来,在所有情况里面取一个最大值就可以了。假设 i 等于5,以 a[ i ] 为结尾的区间一共是五段(黑色线条部分),在这5段中找出最大的子段和,或者针对 i = 4 也能找到最大的子段和,i 等于1,2,3都能找到最大的子段和的话,在这所有情况里面取一个max就是最终结果了。

2025-03-17 22:56:48 1084

原创 【PTA题目解答】7-5 剪切粘贴

使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。abcdefgcdeabfgbfgabfcdeg每次操作后的字符串即为新的当前字符串。在若干次操作后,请给出最后的编辑结果。

2025-03-16 20:26:16 354

原创 【PTA题目解答】7-8 输出全排列(20分)

请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。

2025-03-15 17:40:05 288

原创 【PTA题目解答】7-6 字符串 c++

字符串s字母c子串strc在s中出现的次数s的逆str在s中的所有位置所有单词首字母大写后的字符串在这里给出一组输入。在这里给出相应的输出。

2025-03-15 17:32:10 242

原创 【PTA题目解答】7-4 数气球 (20分)

天空上有n个气球,第i个气球的颜色为colori​(为全由小写字母组成的字符串)请你数出每种颜色的气球的数量,并按照颜色出现的先后顺序进行排序输出。

2025-03-15 17:30:56 306

原创 【PTA题目解答】7-3 字符串的全排列(20分)next_permutation

给定一个全由小写字母构成的字符串,求它的全排列,按照字典序从小到大输出。

2025-03-15 17:30:25 196

原创 【PTA题目解答】7-2 简化的插入排序(15分)

本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

2025-03-15 17:29:46 220

原创 【PTA题目解答】7-1利用STL比较数据大小并排序(15分)c++

题目说输入非整型数据就停止,不用特意判断输入的数据是整型还是非整型,如果用户输入的是字符(例如。进入错误状态,后续的所有输入操作都会被跳过,直到错误状态被清除;根据题目要求,模拟即可,set容器会帮我们把插入的数自动排序好。,但输入的是字符)。会检测到输入的类型不匹配(期望。),而程序期望输入的是一个整数。

2025-03-15 14:32:10 259

原创 【模板】前缀和(详解)c++

前缀和与差分的核⼼思想是预处理,可以在暴⼒枚举的过程中,快速给出查询的结果,从⽽优化时间复杂度。是经典的⽤空间替换时间的做法。

2025-03-15 07:33:58 245

原创 【模板】二维前缀和(前缀和详解)c++

比如让我查询圆圈中的子区间,用两层for循环把子区间循环一下,在把每个数累加起来就可以了,一层循环x1,x2,一层循环y1,y2,循环的时候用一个sum累加起来,这个子矩阵里面所有的和就全都算出来了,有q次询问,每次查询计算二维数组里面所有元素的和,时间复杂度是O(q*n*m),带入题目给的数据范围,1000*1000*1e5=1e11,暴力解法思路很简单,但是代码会超时。只要二维前缀和数组创建出来,我们就可以用O(1)的时间复杂度找到某一个子矩阵中所有元素的和。

2025-03-14 16:01:25 1235

原创 洛谷 P10449 费解的开关(枚举详解)c++ - 难度指数三颗星

存的时候,把0->1,把1->0,此时,全灭就代表题目中的全亮,如果这盏灯是亮的话就把你存成灭,为什么反着存,如果是全灭00000的形式,判断最终结果就很简单了,因为我们是用5个数a[0-4]来存,题目从全亮变全灭,容易判断最终的状态,最终的状态是全灭的,直接看a[4]是不是等于0就可以了,这是第一个优势;要让全亮变成全灭,要让第一个1和第四个1变灭,下一行的按法就是对应的按第一个位置和第四个位置,正好跟ai最终被按之后的结果是一样的,所以下一行的按法就是ai被按之后的结果;

2025-03-13 13:38:55 799

原创 位运算的应用3(将指定⼆进制位设置为1、数字的补数)

有时候需要将⼀个整数 x的⼆进制表⽰中的某⼀位(⼏位)设置为1,其余位置保留原值,则可以使⽤另⼀个数 m,使m的⼆进制上对应位置为1,其余位置为0。然后使两个数进⾏按位或运算( x | m),即可得到想要的数。将x=00101011 的低 4位置为 1 ,其余位保持原来的值不变。只需要将x=00101011 与m=00001111(低 4 位为 1,其余位为0)进⾏按位或运算当然也可以只设置 x ⼆进制中的某1位,也就是将x⼆进制中的第i。

2025-03-11 20:58:24 304

原创 位运算的应用3(获取⼆进制中的指定位、leetcode 190.颠倒二进制位)

当我们需要获取⼀个整数 x 的⼆进制中第i位(从低到⾼,以最低位为第0位)是1还是0的时候,我们可以对 x做这样的运算:,如果结果是0,表⽰第i位是0,如果结果是 1,表⽰第i位是1确定 x = 的第 3 位的值,只需要将x= 右移3位,第3位就到最低位,然后和 1进⾏按位与运算即可。

2025-03-11 19:41:13 376

原创 位运算的应⽤2(保留⼆进制位中的指定位)

假设我们有⼀个权限标志位,存储在⼀个变量中,我们不知道它设置的是读还是什么操作,可以通过按位与操作来检查某个特定位是否被设置。进制中取出某个位或者某⼏个位,使取出的位置上保留原来的值,其他 位置为 0。位2:执⾏权限(Execute),设置为1表⽰有执⾏权限,0表⽰没有执⾏权限。位1:写权限(Write),设置为1表⽰有写权限,0表⽰没有写权限。位0:读权限(Read),设置为1表⽰有读权限,0表⽰没有读权限。取出 x= 的最低1位,则只需要将 x= 与m= (末尾。位,则只需要将x= 与m= (低。

2025-03-11 17:06:43 168

原创 位运算的应⽤1(判断奇数和偶数)

判断奇数和偶数判断奇数和偶数(x &1) ==1说明x是奇数,(x &1) ==0说明x是偶数所有偶数的2进制表⽰中,最低位⼀定是0,所有奇数的2进制表⽰中,最低位⼀定是1。所以将⼀个数字与 1进⾏按位与运算,即可判断这个数是奇数还是偶数。

2025-03-11 15:41:14 242

原创 按位与、按位或、按位异或、按位取反

规则:对两个数的对应⼆进制位进⾏异或运算,对应的两个⼆进位相同则为。规则:对两个数的对应⼆进制位进⾏与运算,只有对应的两个⼆进位都为。规则:对两个数的对应⼆进制位进⾏或运算,对应的两个⼆进位只要有。规则:对操作数的⼆进制位进⾏按位取反运算,

2025-03-11 13:12:03 254

空空如也

空空如也

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

TA关注的人

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