- 博客(77)
- 收藏
- 关注
原创 动态规划 - 最长公共子串
设dp[i][j]为当公共子串的最后一位字母为str1[i]和str2[j]时,公共子串的长度。状态转移方程:当str1[i] == str2[j]时, dp[i][j] = dp[i - 1][j - 1] + 1; 当str1[i] != str2[j]时 , dp[i][j] = 0; #include<iostream>#include<string.h&...
2018-10-27 10:17:48 317
原创 C++ 素数
#include <iostream>#include <string.h>#include <math.h>using namespace std;int primeNum(int n){ if (n <= 1) { return 0; } int mid = sqrt(n); for...
2018-10-27 09:54:05 410
原创 C++ 常记知识点
1、如果.h文件中声明了一个static全局变量,且多个源文件中使用#include包含了该头文件,则:多个源文件中都包含一份单独的拷贝,且初始值相同。这些拷贝之间相互独立,如果改变其中某个静态全局变量的值,不会影响静态全局变量的其他拷贝。2、内联函数和宏定义的区别:内联函数:在编译阶段展开;是一个函数,具有函数的基本性质,可以像普通函数一样调试;作为类的成员函数时,可以访问类成员,t...
2018-10-23 13:19:59 295
原创 插入排序、希尔排序、快速排序
插入排序:void insertSort(int array[], int n){ int temp = 0; int j = 0; for (int i = 1; i < n; i++) { if (array[i] < array[i - 1])//当前值小于有序序列的最大值 { tem...
2018-10-17 17:54:08 184
原创 自定义实现string类
myString.h: #include <iostream>using namespace std;#ifndef MYSTRING_H#define MYSTRING_Hclass MyString{public://构造函数 MyString(const char* str = NULL);//拷贝构造函数 MyString(const ...
2018-10-17 16:48:25 704
原创 快速排序
将最左边的点设置为基准点,小的放到左边,大的放到右边,然后递归直到left>=right为止。#include <iostream>using namespace std;void quickSort(int array[], int left, int right){ if (left >= right) { return;...
2018-10-13 08:51:03 148
原创 c++ 实现全排列
中心思想:递归求子数组的全排列。具体操作:将每个元素都与子数组的第一个元素交换, 再求剩余部分的全排列, 求完后再交换会来,复原原数组。中止条件:low==high时,输出一种排列情况。#include <iostream>using namespace std;void swap(int &a,int &b){ int temp=a...
2018-10-10 11:11:20 4975
原创 二叉树的非递归遍历
节点:class Node{public: int data; Node* left; Node* right;};非递归前序遍历:void preOrder1(Node* root){ if (root == nullptr) { return; } stack<Node*> nStac...
2018-10-09 11:52:50 112
转载 内存池
为什么需要内存池?C/C++下我们经常需要分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端:调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,调用free/delete,系统可能需要合并空闲内存块,这些会产生额外开...
2018-10-05 22:03:32 1178
原创 c++ const用法总结
1、const修饰指针const int* a;表明*a的值不可变,但是指向的地址可变。 int* const a;表明a的值不可变,即该指针指向的地址不可改变。2、const修饰值const int a;表明a的值不可变。3、const修饰成员变量必须在构造函数中进行初始化; 可以被非const成员函数和const成员函数调用;4、const修饰成员函数void sum...
2018-10-05 15:17:56 137
转载 c++函数模板、类模板
关于这一块,只说一点:类模板的实现需要和类的声明放在同一个文件中,即都放在.h文件中,否则会报错。原因: 因为在编译时模板并不能生成真正的二进制代码,而是在调用模板类或函数的CPP文件时才会去找对应的模板声明和实现,在这种情况下编译器是不知道实现模板类或函数的CPP文件的存在,所以它只能找到模板类或函数的声明而找不到实现,而只好创建一个符号寄希望于链接程序找地址。但模板类...
2018-10-04 22:05:41 168
原创 指针和引用的区别以及对引用传递的解释
指针和引用的区别:指针是一个实体,是一个指向地址的值,引用只是一个别名; 指针在使用的时候需要解引用(*),引用不需要; 指针的值是可变的,引用的值一定要在初始化的时候被指定且不可变; 指针可以用const修饰,引用不行; 指针可以为空,引用不可以为空; sizeof指针得到的是指针的大小,sizeof引用得到的是引用指向的变量的大小; 指针++是指地址+1,引用++是引用指向的变...
2018-10-03 16:39:54 180
原创 牛客网错题集锦之六
目录1、完全二叉树、完美二叉树、完满二叉树1)完全二叉树 (Complete Binary Tree)2)完美二叉树(Perfect Binary Tree)3)完满二叉树(Full Binary Tree)2、关于何时编译linux内核3、软件是程序、数据及相关文档的集合4、联合union类型的变量在定义时是可以被初始化的5、逗号表达式6、数据的物理结构和逻辑...
2018-10-02 17:51:35 184
原创 C/C++中空结构体、空数组、空类的作用
1、sizeof是什么?对象类型的大小是在编译的时候直接确定的。 sizeof不是一个函数,而是一个返回对象类型大小的宏。 其作用是返回一个对象或类型所占的内存字节数。如下例子可以运行通过:int main(){ int a = 12; int b[sizeof(a)]; cout << sizeof(b)/sizeof(int) <&l...
2018-10-02 17:27:14 7640 2
原创 c结构体、c++结构体和c++类的区别以及错误纠正
C和C++结构体的区别C语言中的结构体不能为空。 C语言中的结构体只是一个复杂的数据类型,只能定义成员变量,不能定义成员函数,但是可以定义函数指针;C++可以定义成员函数和成员变量。 C++的结构体和类体现了数据结构和算法的结合。 C语言中定义结构体变量时,struct不可以省略:C++中定义结构体变量时,struct可以省略。struct Test{ int num;...
2018-10-02 15:02:58 874
原创 MATLAB绘图 - 绘制符合论文要求的图表
写小论文的时候,经常需要插入固定格式图标,手动设置太麻烦,按照网上的资料编了一段程序出来进行自动处理,生成图片后再利用MATLAB导出即可。目的:生成5*7cm大小的折线图。%% 绘图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 设置字体 & 边框figure()a...
2018-09-14 12:41:46 6710 4
原创 牛客网错题集锦之五
目录1、关于HTTP1.0和HTTP1.12、已知中序遍历的序列为abcdef,高度最小的不可能的二叉树的前序遍历是?3、使用贪心算法思想的算法4、基于哈希算法在信息安全中主要应用在:5、实型常量6、中间代码生成时所依据的是:语义规则7、关于无分类编址CIDR8、&&和||具有短路特性1、关于HTTP1.0和HTTP1.1HTTP1.0:只支...
2018-09-12 15:26:30 471
原创 牛客网错题集锦之四
目录1、函数的定义和调用2、循环队列3、曼彻斯特编码4、printf输出编译顺序5、类中初始化列表的执行顺序是变量的声明顺序!6、MySQL索引7、Linux中可以用来查找可执行文件的命令8、时间片轮转法计算平均周转时间1、函数的定义和调用函数的定义不可以嵌套 函数的调用可以嵌套2、循环队列循环队列中,front为队头指针,rear为队尾指针,存储空...
2018-09-11 20:56:39 167
原创 二叉树前序、中序、后序遍历及推导方法
目录二叉树的遍历方法推导遍历结果1、已知前序遍历和中序遍历2、已知中序遍历和后序遍历3、已知前序遍历和后序遍历,无法确定一颗唯一的二叉树参考文献 二叉树的遍历方法前序遍历:根左右。先打印,再遍历左子树,再遍历右子树; 中序遍历:左根右。先遍历左子树,再打印,再遍历右子树; 后序遍历:左右根。先遍历左子树,再遍历右子树,再打印。采用递归思想实现:/**...
2018-09-10 20:39:17 22128 5
原创 牛客网错题集锦之三
目录1、构造函数初始化时的初始化列表2、“<<=, >>=, &=, ^=, |=”的含义3、类的静态成员4、Math类中与取整有关的方法5、字符数组和字符串6、优先级7、C++中参数传递的方式8、能够从输入流中提取指定长度的字节序列的函数是:read 1、构造函数初始化时的初始化列表必须采用初始化列表的情况:没有默认...
2018-09-10 20:16:03 228
原创 牛客网错题集锦二
目录 1、常量与变量2、C程序中的预处理命今是在预编译时进行处理的,而不是在程序执行过程中来处理的。3、运算符优先级4、共用体union5、原码、反码、补码6、 派生类的成员变量访问权限7、构造函数不能声明为虚函数,析构函数可以声明为虚函数1、常量与变量‘c’是字符常量 c是变量2、C程序中的预处理命今是在预编译时进行处理的,而不是在程序执行过程中来处理...
2018-09-08 11:14:12 213
原创 牛客网错题集锦之一
目录1. 派生类和继承2. 指针数组3. 二叉树遍历4. UTF-8和UTF-165.构造函数和析构函数的调用顺序6. 内部静态类的可见性和存在性不一致7. 用C程序实现的算法可以没有输入但必须要有输出8. Nagle算法的规则:1. 派生类和继承派生类类内,不管哪种继承,一定能访问基类的public和protected成员,永远不能访问private成员;...
2018-09-05 22:58:20 189
原创 Error:stack overflow分析
函数的栈空间是用于存放局部变量、函数返回地址以及函数参数等数据的内存区域,其大小是有限制的(VC6默认1M)。局部变量占用空间太大或者函数的调用层次太深就会出现“stackoverflow”的情况。解决:增大栈空间或者在堆上分配内存。以VC6为例,如何增大栈空间:Project->setting->link->category中选择output,修改stack的R...
2018-08-31 14:36:34 2870
原创 C++ new和delete内存管理
目录1、new和delete的含义1)对基本类型的处理2)对类的处理new[]/delete[]和new/delete的工作原理如果出现delete pT22、new/delete和malloc/free的区别和联系3、C++申请、释放内存的步骤4、内存泄漏的几种情况5、参考文献 1、new和delete的含义new和delete是用来分配内存和释...
2018-08-31 14:17:46 298
原创 TCP 协议及封包和解包
关于这方面网上资料不少,主要筛选出了这几篇讲的比较有条理的文章来看。《TCP/IP 网络数据封包和解包》《socket 封包和解包》《TCP通讯处理粘包详解》《TCP协议及帧格式》《关于TCP封包、粘包、半包》说一下我是怎么处理的:Recv接收数据,存入chSendbuff中; 判断chSendBuff中的数据,是否大于一个自定义数据包的长度; 如果大于,则开始校验...
2018-08-30 19:49:37 5470
转载 Linux中的signal机制
参考:《Linux信号发送命令之kill命令》《linux中的signal机制》《SIGINT SIGTERM SIGKILL区别》
2018-08-30 19:32:03 204
原创 strcut结构体和char型数组的相互转化
针对内存连续的结构体,把一整段内存拷贝到char数组对应的内存中。考虑4字节对齐!struct Test{ int a; char b; char c[1024]; unsigned short d;};char* ch = "abcdefghijklmn1234567890";char* chTest = new char[2048];memse...
2018-08-30 19:24:01 6148
转载 libevent关键函数及知识点梳理
本文转载自:https://blog.csdn.net/yuliying/article/details/42126195 事件循环控制:主要是开始事件循环和终止事件循环 使用默认配置开始事件循环: event_base_dispatch() 开始事件循环,可以设置一些参数: event_base_loop() 指定时间后退出事件循环,处理完回调函数后退出 : e...
2018-08-30 17:40:33 1393
原创 recv( )函数返回值说明
recv函数int recv( SOCKET s, char FAR *buf, int len, int flags);参数说明第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明buf的长度; 第四个参数一般置0。同步Socket的recv函数的执行流程当应用程序调用recv函数时:rec...
2018-08-30 17:27:16 37183 1
原创 C/C++常用函数记录
long int strtol(const char *nptr,char **endptr,int base);说明参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’的时候会使用8...
2018-08-30 16:44:19 245
原创 如何判断一个字符串指针是否为空(c)
#include<stdio.h>#include<stdlib.h>void main() { char *str = (char*)malloc(sizeof(char)*10); //分配地址空间 gets(str); //输入 if(str[0]!='\0') //由于字符串以'\0'结尾,故可以这样来判断 ...
2018-08-30 16:36:40 5371
转载 事件驱动模型和异步IO多路复用
介绍的比较全面和基础的一篇文章,对于理解概念有很大的帮助:《事件驱动模型和异步IO多路复用》 《libevent和基于libevent的网络编程》 epoll 仅在linux是IO复用技术 Libevent 将不同平台的IO复用技术封装统一的接口,使程序可以跨平台 ZeroMQ 消息队列,支持不同的模型,用于将不同的应用程序采用消息方式连接起来,erlang的机制有点类似。...
2018-08-30 16:34:00 335
原创 g++调试工具
g++调试工具:valgrind --log-file=val.log --leak-check=full ./serverhttps://blog.csdn.net/yuanfengyun/article/details/45246325
2018-08-23 19:58:23 419
转载 C++ 数字、string和char*的转换
引用:https://blog.csdn.net/zhubaohua_bupt/article/details/70055878#include<iostream>#include<string>#include<sstream>#pragma warning(disable:4996)using namespace std;int main...
2018-08-15 16:01:48 258
原创 STL的多线程安全问题
多个线程可以同时读取一个容器中的内容,eg: find, begin, end 等. 多个线程对不同容器的同时写入合法。 但是,多个线程同时读写一个容器是很危险的。以map为例:当你调用map的任何接口时,比如 end(), begin(), find()等时,可能会返回一个iterator,如果有别的线程正在修改这个map,你的iterator就变得无效了,再用这个iterator行为就...
2018-08-15 15:51:32 1392
原创 GDB调试基本命令
GDB调试步骤使用gdb调试时,需要在编译时使用-g参数g++ -g test.cpp -o testgdb ./test常用命令:start #开始调试,停在第一行代码处,(gdb)start l #list的缩写查看源代码,(gdb) l [number/function] b <...
2018-08-09 20:10:15 63417
转载 Socket详解
目录一、其他参考资料二、引用:1、网络中进程之间如何通信?2、什么是Socket?socket一词的起源3、socket的基本操作3.1、socket()函数3.2、bind()函数网络字节序与主机字节序3.3、listen()、connect()函数3.4、accept()函数3.5、read()、write()等函数3.6、close()函数...
2018-08-09 11:17:17 223
转载 将类封装成dll/lib的方法
引用:将类封装成dll/lib的方法:https://blog.csdn.net/oceanark/article/details/51902316
2018-08-09 09:21:25 1750
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人