笔记
困了就喝白茶
街边太多人与车,繁华闹市人醉夜
展开
-
C++多继承带来的二义性问题的解决方案
多继承(菱形或称钻石继承)编程可以带来很多便利,也更贴近生活但也带来很多麻烦#include<iostream>using namespace std;class B1{public: void output();};class B2{public: void output();};void B1::output(){ cout << "call the class B1" << endl;}void B2::output(){原创 2021-03-04 11:31:34 · 442 阅读 · 1 评论 -
超实用的Qt快键
F4 : 在同名的头文件和资源程序文件之间切换F2 : 跟踪光标下的符号,若是变量,可跟踪到变量声明的地方;若是函数体或函数声明,可在两者之间切换Shift+F2: 在函数原型和函数实现之间切换Ctrl+Shift+R:对光标处的符号更改名称,这将替换到所有用到改符号的地方Ctrl+I :为选择的文字自动缩进Ctrl+/: 为选择文字进行注释符号或取消注释F1:为光标处查看帮助文原创 2021-01-23 00:41:09 · 206 阅读 · 1 评论 -
每天学习一个改善自己C++的一个小技巧之条款03:尽可能使用const
/***本博文以及这个系列的都是我本人观看《Effective C++》的观后感,每天学习一个改善自己C++的一个小技巧。**条款03:尽可能使用constconst它允许你指定一个语义的约束(指定一个不该被修改的对象)(就是定义一个常量),而编译器会强制实施这个约束,编译器可以帮助你告诉你的客户改数据不应该被改变。const它可以作用于类外部修饰全部变量或名字空间作用域(namespace)的常量,或是修饰文件、函数、区块作用域(局部)中被声明为static的对象。也可以作用于原创 2020-12-12 20:06:30 · 123 阅读 · 0 评论 -
每天学习一个C++提升的小技巧:条款02:尽量用const,enum,inline 替换#define。
本博文以及这个系列的都是我本人观看《Effective C++》的观后感,每天学习一个改善自己C++的一个小技巧。条款02:尽量用const,enum,inline 替换#define。*/#include<iostream>using namespace std;#define PI 3.14 //宏常用大写/** 记号名称PI也许从未被编译器看见,也许在编译器开始处理源码的时候之前就被预处理器移走了。于是记号名称PI很可能没有进入记号表内。当你运用此常量但获得一个编译原创 2020-12-11 15:36:19 · 96 阅读 · 0 评论 -
C/C++中static关键字的基本用法
**static关键字1.修饰成员变量2.修饰成员方法3.静态函数4.静态全局变量5.静态局部变量1.修饰成员变量1)静态成员变量的初始化必须放在类外2)静态成员变量不属于某个对象,而是属于整个类,在对象之间共享。计算每 个对象的内存空间时,不算上静态成员变量3)可以通过类名访问静态成员变量class A{public: A(int ab) { this->m_ab = ab; } static int m_aa; int m_ab;};int A原创 2020-12-09 22:18:36 · 352 阅读 · 0 评论 -
为什么c/c++面试老问我关键字const的问题难道我不会答吗
clude<iostream>//const 的本质是防止误操作/** 1.用const修饰函数的参数* 2.用const修饰函数的返回值* 3.const成员变量* 4.const成员函数* 5.const修饰指针*/using namespace std;//1.用const修饰函数的参数void myPrintf(const int num){ int a = 5; //num = 5; //报错 //num = a; //报错原创 2020-12-08 22:55:17 · 82 阅读 · 0 评论 -
408中栈的应用
1.中缀转后缀作用:(用于计算转换过程中的栈的大小,或者任意一步中栈里面存放的是什么元素。)口诀:从左到右扫描式子,遇到数字就写到后缀表达式中,(第一次)遇到符号就压入栈中,高阶符号压栈,低阶或同阶则把输出一个栈的符号。例子:2.中缀的表达式计算方法:采用两个栈,数入左符号入右,优先级高的符号压入栈,低优先级或者同阶则出栈,数出栈时,要注意先出栈的放右边。3.前缀.后缀的表达式计算方法:采用一个栈,前缀从右扫描,先出栈的放左边。后缀从左扫描,先出栈的放右边。...翻译 2020-12-07 19:23:26 · 142 阅读 · 1 评论 -
内存四区的作用和意义
#include<stdio.h>/*内存四区* 代码区:存放函数体的二进制代码,由操作系统管理(存放cpu执行的机器指令,是共享是只读的)* 全局区:存放全局变量(放在mian函数外面的变量)、静态变量(static)以及常量(const)* 栈区:由编译器自动分配释放,存放函数的参数值、局部变量等(递归的时候要考虑到栈的情况)* 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收(分配malloc,释放free)*//*内存四区存在的意义不同区域存放的原创 2020-12-05 21:10:20 · 2328 阅读 · 4 评论 -
排序一(直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,选择排序)
#include<stdio.h>#include<stdlib.h>#include<time.h>/*排序的时间复杂度由两个因素决定* 1.比较次数(compare)* 2.移动元素次数(more)*/typedef int KeyType;//设计关键字结构体typedef struct{ KeyType key; //....可以携带其他信息}RecType;//交换两个结构体void swap(RecType&a原创 2020-12-05 20:42:45 · 1082 阅读 · 0 评论 -
c语言字符串的模式匹配和c++string的一般操作
#include <stdio.h> #include"common.h"#define OK 0#define ERROR 1/* * 字符串模式匹配 * *///字符结构体typedef struct{ char data[Maxsize]; int length;}SqString;//暴力破解法,时间复杂度n平方int BF_Index(SqString s, SqString t){ int i=0,j=0; while(i&l原创 2020-12-04 22:01:50 · 278 阅读 · 0 评论 -
linux下设置文件的阻塞特性flags
文件的阻塞特性:阻塞:操作文件且资源不可得时,进程进入睡眠(挂起)状态对于管道文件和普通文件来说,默认是阻塞的。*/int main(){ //创建无名管道 int fd[2]; pipe(fd); char buf[10]; bzero(buf,10); //将管道设置为非阻塞状态 //a.获取当前文件的flags int flags = fcntl(fd[0],F_GETFL); //b.在flags的基础上,设置原创 2020-11-29 23:01:40 · 307 阅读 · 0 评论 -
最详细的不带头结点的双循环链表
#include<iostream>/*双向循环链表一般来说循环双链表带头节点操作会方便一些的不带头结点的循环双链表适合浏览图片*/using namespace std;//设计节点typedef struct doublelinknode{ int data; struct doublelinknode* prior; struct doublelinknode* next;}Node;//初始化链表Node* In...原创 2020-11-29 20:41:15 · 1781 阅读 · 0 评论 -
linux的进程间通信之信号通信
#include <stdio.h>#include"common.h"/*信号的响应有四种方式:1.默认2.忽略3.阻塞延迟响应(挂起)4.捕抓(关联)*///响应函数 接口是固定的void f(int sig){ printf("捕抓到一个信号:%d\n",sig); wait(NULL); //回收了一个僵尸子进程}int main(){ pid_t pid =fork(); if(pid<0原创 2020-11-28 18:21:47 · 140 阅读 · 0 评论 -
linux进程间的通信之有名管道通信
#include <stdio.h>#include"common.h"int main(){/* * 有名管道: * 1.不区分读写端; * 2.打开操作时不允许以单边打开(只有一边,读或写),会阻塞打不开; * 3.管道不会缓存数据,得先先运行读的程序,在运行写的程序 * 4.有写入保护 * 5.用于两个陌生的进程之间的通信*//* 写入信息的程序*/ //1.创建有名管道 mkfifo("/home/gentle/原创 2020-11-28 17:05:55 · 123 阅读 · 0 评论 -
linux下进程间的通信之无名管道
#include <stdio.h>#include"common.h"/* * 无名管道通信: * 1.不支持多人写入,写入不保护 * 2.用于1对1通信 * 3.fd[0]为读端 fd[1]为写端 * 4.阻塞等待 **/int main(){ //1.创建无名管道 int fd[2]; pipe(fd); //2.创建子进程 pid_t pid = fork(); if(pid<0)//进程创建失败原创 2020-11-28 16:13:49 · 161 阅读 · 0 评论 -
exec函数族的用法
#include <stdio.h>#include"common.h"int main(){ pid_t pid = fork(); int status; if(pid>0) { sleep(2); printf("parent process\n"); wait(&status); switch (WEXITSTATUS(status)) { //返回子进程的结束状原创 2020-11-28 15:44:30 · 134 阅读 · 0 评论 -
linux的多进程创建和阻塞等待
#include <stdio.h>#include"common.h"int main(){ //定义一些变量 pid_t pid; int status; //分岔口创建父子进程 pid =fork(); if(pid<0) //创建进程失败 { printf("fork failed\n"); exit(1); //不正常退出 } else if原创 2020-11-28 14:47:45 · 188 阅读 · 1 评论 -
linux下的守护(精灵)进程daemon
#include <stdio.h>#include<fcntl.h>#include<sys/types.h>#include<unistd.h>#include<stdlib.h>#include<sys/wait.h>#include<string.h>#include<sys/stat.h>int main(){ //0.准备变量 pid_t pid; int原创 2020-11-28 12:03:52 · 166 阅读 · 0 评论 -
二叉树的创建和先序遍历
/*///////////二叉树*/#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; struct node* netx;}*Node;typedef struct BiTNode{ char data; struct BiTNode* lchild, * rchild;}BiTNode, * BiTree;void Cre原创 2020-11-18 20:53:10 · 315 阅读 · 0 评论 -
循环队列的初始化、进队、出队、以及遍历打印
/*顺序循环队列*/typedef int Status;typedef int ElemType;#define MAX 1024#define ERROR -1#define OK 0#include<iostream>#include<stdbool.h>using namespace std;//设计节点结构体typedef struct SqNode{ ElemType elem[MAX]; int front; int rear;原创 2020-11-15 22:16:23 · 955 阅读 · 0 评论 -
队列的链式存储的、初始化、创建、进队、出队、销毁和遍历
学海无涯苦做舟,天天7.起来奋斗。道路遥遥无期需作伴加QQ845264178点个赞谢谢#include<iostream>using namespace std;#define MAX 1204#define ERROR -1#define OK 0typedef int ElemType;typedef int Status;typedef struct node{ ElemType elem; struct node* next;}Node;typ原创 2020-11-15 20:52:43 · 321 阅读 · 1 评论 -
链式栈的初始化、进栈、出栈、取栈顶C/C++实现
链式栈的初始化、进栈、出栈、取栈顶//stcuct node{ datatype data; struct node *next;}typedef struct { struct node *top; int size;}linkstack;static linkstack *init_stack(){ linkstack *s = malloc(sizeof(linkstack)); s->top =NULL; s->size = 0; retu..原创 2020-11-13 21:00:46 · 635 阅读 · 0 评论 -
栈的顺序存储结构
自己打的栈的顺序存储结构;有问题可以探讨下QQ845264718/** 顺序栈*/#include<iostream>using namespace std;typedef int SElemType;typedef int Status;#define MAX 1024#define OK 0;#define ERROR -1#define OVERFLOW -2struct SqStack{ SElemType *elem; int to原创 2020-11-12 21:03:33 · 93 阅读 · 0 评论 -
C/C++数据结构算法的带头结点的单链表
单链表的带头结点的初始化、创建、插入删除和销毁欢迎大家与我沟通交流QQ845264718#include<iostream>using namespace std;#define OK 0#define ERROR -1//#define OVERFLOW -2typedef int Status;typedef int ElemType;//1.设计节点typedef struct node{ ElemType elem; struct node原创 2020-11-11 19:14:21 · 213 阅读 · 1 评论 -
c/c++版本数据结构的顺序表
#include<iostream>using namespace std;#define MAX 1024typedef int ElemType;#define OK 0#define ERROR -1#define VOERFLOW -2typedef int Status;//设计顺序表 typedef struct SqList { ElemType* elem; int length;}SqList;原创 2020-11-11 16:36:01 · 88 阅读 · 2 评论 -
韶关学院大四才开始认真学习的电子专业学生
时间2020 11 10号,大学前面三年不认真学习怎么办呢,我室友做线上返利已经做到百万年薪了。其他两个人在打游戏啥的。今天一个室友也准备加入线上返利了赚钱确实快啊。从无到现在他才做了4 5个月吧。另外一个被录取了做管培生,而我想去做嵌入式软件。我想做一个能影响很多人生活的东西,我想去挑战一下难度,不知道我能不能,但我确实想试试看。现在的我数学...原创 2020-11-10 22:49:44 · 244 阅读 · 0 评论