- 博客(39)
- 收藏
- 关注
原创 c++的iO流
在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?使用itoa()函数使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。在C++中,可以使用stringstream类对象来避开此问题。在程序中如果想要使用stringstream,必须要包含头文件。
2023-05-07 12:31:30
461
3
原创 特殊类学习
C++11扩展delete的用法,delete除了释放new申请的资源外,如果在默认成员函数后跟上。拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个。设置成私有:如果只声明没有设置成private,用户自己如果在类外定义了,就可以不。文件啊等等,而有可能该对象程序运行时不会用到,那么也要在程序一开始就进行初始化,提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建。
2023-05-05 13:37:00
645
1
原创 c++异常
实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了 这也是多态的一个体现// 服务器开发中通常使用的异常继承体系public:, _id(id){}protected:int _id;
2023-05-04 14:44:26
573
4
原创 c++11下篇 + 智能指针
在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含< thread >头文件。函数名功能thread()构造一个线程对象,没有关联任何线程函数,即没有启动任何线程构造一个线程对象,并关联线程函数fn,args1,args2,…为线程函数的 参数。
2023-05-02 19:32:44
1991
8
原创 c++11上篇
C++11 是第二个真正意义上的 C++ 标准,也是 C++ 的一次重大升级。C++11 增加了很多现代编程语言的特性,比如自动类型推导、智能指针、lambda 表达式等,这使得 C++ 看起来又酷又潮,一点也不输 Java和 C#。
2023-05-01 15:52:21
1112
5
原创 c++多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生类才能实例化出对象。
2023-04-30 16:38:35
559
5
原创 进程控制下篇
在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程当前进程调用fork,当控制转移到内核中的fork代码后,内核做:分配新的内存块和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子进程到系统进程列表当中fork返回,开始调度器调度简单来说在fork之后会有两个进程,有两个进程地址空间,子进程拷贝了父进程的地址空间以及页表,然后在进行自己的程序运行。具体在产生两个进程的时候谁先谁后这个就全取决于调度器;
2023-04-29 17:22:49
699
3
原创 linux进程控制(上)
截至目前,我们所认识的计算机,都是有一个个的硬件组件组成输入单元:包括键盘, 鼠标,扫描仪, 写板等中央处理器(CPU):含有运算器和控制器等输出单元:显示器,打印机等这里的存储器指的是内存不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。一句话,所有设备都只能直接和内存打交道。例如你和你的朋友在QQ上聊天你的信息到底是直接发给朋友还是先写入内存?
2023-04-28 13:59:02
771
11
原创 c++中的继承
下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。
2023-04-24 14:48:51
233
10
原创 拿下模板进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式.【优点】模板复用了代码,节省资源,更快的迭代开发,**C++的标准模板库(STL)**因此而产生增强了代码的灵活性、【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误, 2.0);return 0;[外链图片转存中...(img-7mAqb1rC-1682159609306)]
2023-04-22 18:34:32
454
6
原创 【Zblog搭建博客网站】windows环境搭建属于自己的博客并发布上线 - cpolar内网穿透
想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕不开的项目。就以笔者自己的经历来说,就被自制网页网站卡过很久。不过随着电脑技术的发展,已经出现了很多便捷快速建站的工具软件。今天,笔者就为大家展示,如何快速上手Z-blog,建立自己的个人博客网站,并通过cpolar建立的内网穿透数据隧道,将这个个人博客软件发布到公互联网上。从上面介绍的步骤可以看出,想要快速发布一个网站,有必要选择一些简单趁手的辅助工具,虽然Z-blog搭建的网站但很简单,但却是我们熟悉cpolar发布本地网站很好的例子。
2023-04-21 23:13:47
719
18
原创 linux make和makefile
令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。makefifile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编。make是一个命令工具,是一个解释makefifile中指令的命令工具,一般来说,大多数的IDE都有这个命。像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂。
2022-11-17 11:10:58
355
14
原创 猿创征文 | linux git工具
5、Git 的内容完整性要优于 SVN:**Git 的内容存储使用的是 SHA-1 哈希算法。2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。git clone 仓库网址。
2022-11-14 21:52:27
254
11
原创 猿创征文 | linux的gdb 和g++
我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而。在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查。静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也。动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时。-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高。
2022-11-14 17:52:48
1357
12
原创 猿创征文 | linux 工具yum和vim
Linux软件包管理器软件包:在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
2022-11-13 21:52:33
278
12
原创 六大排序实现
任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。在剩余的array[i]–array[n-2](array[i+1]–array[n-1])集合中,重复上述步骤,直到集合剩余1个元素。序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。
2022-11-09 15:25:56
659
19
原创 linux遇到-bash-4.2$
今天登录我的服务器时,一下子给我看蒙了,命令行怎么变成这样了,其实这个问题很简单,只需要几个步骤就好了(root用户建议直接去重装服务器)
2022-11-07 10:15:17
656
5
原创 猿创征文| 动规了解
解题:需要我们在目标串中去反复找规定的子串,目标串不会变化,子串每找到一次就需要再加一次子串,然后在目标串找新的子串;第一次需要找ba —》第二次就需要找baba -》》以此类推直到找不到为止。所以就会有动态规划算法出现,子串就像一个窗口,这个窗口每次都会增加一个次子串。kmp算法解题(因为kmp我还没有写博客总结这里就把官网的解题扒下来了)这个的复杂度时间O(mn)空间需要k个word的长度O(kn)kmp是找字符串重复的最好的算法,可以把时间缩成线性。的一个子字符串,那么单词。
2022-11-03 13:37:49
396
5
原创 猿创征文c++学习之路的工具
2.代码平台的移植性低(最简单的scanf函数在Visual Studio中并不支持(会报不安全的错误)需要用其自带的scanf_s函数替代,由于scanf与scanf_s在细节方面并不完全相同且其他平台并不支持scanf_s让代码的移植性低)1.安装包巨大(我使用的Visual Studio 2019 仅仅为了支持c++的正常运行的安装包都已经8G)1.由于对markdown文档的支持性有缺陷,在一些场景不合适。3.内置的各种插件为用户提供了很好的体验感。2.根据自己的需要可以写各种类型的笔记。
2022-11-01 19:53:36
689
12
原创 c++模板初阶
比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟****,然后将实例化的类型放在中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。一个非模板函数可以和一个同名的函数模板同时存在,而且该函数模板还可以被实例化为这个非模板函数。
2022-10-31 15:23:09
162
12
原创 动态内存管理及柔性数组
这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数size为0,malloc的行为是标准是未定义的,取决于编译器。...
2022-07-20 19:49:13
147
20
原创 结构体、枚举、联合博客浅习
name[10];}stu1;//定义//初始化enumDay//星期{Mon,Tues,Wed,Thur,Fri,Sat,Sun};联合也是一种特殊的自定义类型这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。//联合类型的声明unionUn{charc;inti;};//联合变量的定义。...
2022-07-20 13:26:42
167
29
原创 字符串函数基础加中等了解
1.sizeof 2.strlen 3.strcmp 4.strcat 5.strcpy 6.strncmp 7.strncat 8.strncpy strstr子串查找strstrBF算法实现strtok切片函数strtok实现
2022-07-08 22:24:48
431
39
原创 整形提升和浮点数的存储及调用
1:问题导入:整形提升?怎么提升?//下面程序输出什么?#include <stdio.h>int main(){ char a = -1; signed char b = -1; unsigned char c = -1; printf("a=%d,b=%d,c=%d", a, b, c); return 0;}结果就是a=-1,b=-1,c=255;ab应该都好理解,c就有一定的问题了,首先char的范围为-127-128;
2022-05-31 18:23:54
421
26
原创 我敢说你赢不了三子棋电脑
游戏实现代码#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void BoardInit(char board[ROWS][COLS], int row, int col){ memset(board, ' ', col * row * sizeof(char)); //将棋盘数组初始化为空格}static int is_full(char board[ROWS][COLS], int row, int col) //检查棋盘是否满了
2022-05-05 16:01:42
243
24
原创 三子棋(人工智障vs人工智能)can you win ?
一、问题描述用c语言实现三子棋。二、基本流程在写三子棋的代码之前,我们来看看实现这个游戏的逻辑:这里就不写了,过于复杂,我不会目录1.头文件实现2.源文件实现3.游戏函数实现1.头文件实现#pragma once#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROW 3#define COL 3//初始化棋盘void InitBoard(cha.
2022-04-26 10:25:28
452
23
原创 动态顺序表详解(单动态顺序表)
//功能:应用C++语言实现顺序表的各项操作 //基本的成员函数: // 构造函数、拷贝构造函数、赋值运算符的重载、析构函数 // 1:动态增容 // 2:打印单链表 // 3:尾插 // 4:尾删 ...
2022-04-07 10:21:33
1827
41
原创 什么是静态顺序表?来客官里面请(详解)
目录初始化函数打印 循环依次打印尾部插入 尾部删除头部插入头部删除删除指定元素删除所有的指定元素返回顺序表的大小判断顺序表是否为空选择排序.h文件(头文件)存放函数的声明以及全局变量测试文件(test.c)顺序表顾名思义,就是用一段连续的存储单元依次存储数据元素的线性结构 。静态顺序表即顺序表的最大容量是确定的。接下来我们要完成的基本操作是:#define nums_MAX 10 //链表的最...
2022-04-07 10:20:44
535
20
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人