C++
Panix2n_n
这个作者很懒,什么都没留下…
展开
-
动态规划 - 最长公共子串
设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 · 349 阅读 · 0 评论 -
c结构体、c++结构体和c++类的区别以及错误纠正
C和C++结构体的区别C语言中的结构体不能为空。 C语言中的结构体只是一个复杂的数据类型,只能定义成员变量,不能定义成员函数,但是可以定义函数指针;C++可以定义成员函数和成员变量。 C++的结构体和类体现了数据结构和算法的结合。 C语言中定义结构体变量时,struct不可以省略:C++中定义结构体变量时,struct可以省略。struct Test{ int num;...原创 2018-10-02 15:02:58 · 906 阅读 · 0 评论 -
牛客网错题集锦之六
目录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 · 353 阅读 · 0 评论 -
牛客网错题集锦之三
目录1、构造函数初始化时的初始化列表2、“<<=, >>=, &=, ^=, |=”的含义3、类的静态成员4、Math类中与取整有关的方法5、字符数组和字符串6、优先级7、C++中参数传递的方式8、能够从输入流中提取指定长度的字节序列的函数是:read 1、构造函数初始化时的初始化列表必须采用初始化列表的情况:没有默认...原创 2018-09-10 20:16:03 · 301 阅读 · 0 评论 -
牛客网错题集锦之五
目录1、关于HTTP1.0和HTTP1.12、已知中序遍历的序列为abcdef,高度最小的不可能的二叉树的前序遍历是?3、使用贪心算法思想的算法4、基于哈希算法在信息安全中主要应用在:5、实型常量6、中间代码生成时所依据的是:语义规则7、关于无分类编址CIDR8、&&和||具有短路特性1、关于HTTP1.0和HTTP1.1HTTP1.0:只支...原创 2018-09-12 15:26:30 · 595 阅读 · 0 评论 -
牛客网错题集锦之一
目录1. 派生类和继承2. 指针数组3. 二叉树遍历4. UTF-8和UTF-165.构造函数和析构函数的调用顺序6. 内部静态类的可见性和存在性不一致7. 用C程序实现的算法可以没有输入但必须要有输出8. Nagle算法的规则:1. 派生类和继承派生类类内,不管哪种继承,一定能访问基类的public和protected成员,永远不能访问private成员;...原创 2018-09-05 22:58:20 · 225 阅读 · 0 评论 -
牛客网错题集锦之四
目录1、函数的定义和调用2、循环队列3、曼彻斯特编码4、printf输出编译顺序5、类中初始化列表的执行顺序是变量的声明顺序!6、MySQL索引7、Linux中可以用来查找可执行文件的命令8、时间片轮转法计算平均周转时间1、函数的定义和调用函数的定义不可以嵌套 函数的调用可以嵌套2、循环队列循环队列中,front为队头指针,rear为队尾指针,存储空...原创 2018-09-11 20:56:39 · 181 阅读 · 0 评论 -
二叉树前序、中序、后序遍历及推导方法
目录二叉树的遍历方法推导遍历结果1、已知前序遍历和中序遍历2、已知中序遍历和后序遍历3、已知前序遍历和后序遍历,无法确定一颗唯一的二叉树参考文献 二叉树的遍历方法前序遍历:根左右。先打印,再遍历左子树,再遍历右子树; 中序遍历:左根右。先遍历左子树,再打印,再遍历右子树; 后序遍历:左右根。先遍历左子树,再遍历右子树,再打印。采用递归思想实现:/**...原创 2018-09-10 20:39:17 · 22316 阅读 · 5 评论 -
牛客网错题集锦二
目录 1、常量与变量2、C程序中的预处理命今是在预编译时进行处理的,而不是在程序执行过程中来处理的。3、运算符优先级4、共用体union5、原码、反码、补码6、 派生类的成员变量访问权限7、构造函数不能声明为虚函数,析构函数可以声明为虚函数1、常量与变量‘c’是字符常量 c是变量2、C程序中的预处理命今是在预编译时进行处理的,而不是在程序执行过程中来处理...原创 2018-09-08 11:14:12 · 227 阅读 · 0 评论 -
TCP 协议及封包和解包
关于这方面网上资料不少,主要筛选出了这几篇讲的比较有条理的文章来看。《TCP/IP 网络数据封包和解包》《socket 封包和解包》《TCP通讯处理粘包详解》《TCP协议及帧格式》《关于TCP封包、粘包、半包》说一下我是怎么处理的:Recv接收数据,存入chSendbuff中; 判断chSendBuff中的数据,是否大于一个自定义数据包的长度; 如果大于,则开始校验...原创 2018-08-30 19:49:37 · 5566 阅读 · 0 评论 -
Error:stack overflow分析
函数的栈空间是用于存放局部变量、函数返回地址以及函数参数等数据的内存区域,其大小是有限制的(VC6默认1M)。局部变量占用空间太大或者函数的调用层次太深就会出现“stackoverflow”的情况。解决:增大栈空间或者在堆上分配内存。以VC6为例,如何增大栈空间:Project->setting->link->category中选择output,修改stack的R...原创 2018-08-31 14:36:34 · 2916 阅读 · 0 评论 -
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 · 507 阅读 · 0 评论 -
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 · 7901 阅读 · 2 评论 -
指针和引用的区别以及对引用传递的解释
指针和引用的区别:指针是一个实体,是一个指向地址的值,引用只是一个别名; 指针在使用的时候需要解引用(*),引用不需要; 指针的值是可变的,引用的值一定要在初始化的时候被指定且不可变; 指针可以用const修饰,引用不行; 指针可以为空,引用不可以为空; sizeof指针得到的是指针的大小,sizeof引用得到的是引用指向的变量的大小; 指针++是指地址+1,引用++是引用指向的变...原创 2018-10-03 16:39:54 · 211 阅读 · 0 评论 -
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 · 433 阅读 · 0 评论 -
C++ 常记知识点
1、如果.h文件中声明了一个static全局变量,且多个源文件中使用#include包含了该头文件,则:多个源文件中都包含一份单独的拷贝,且初始值相同。这些拷贝之间相互独立,如果改变其中某个静态全局变量的值,不会影响静态全局变量的其他拷贝。2、内联函数和宏定义的区别:内联函数:在编译阶段展开;是一个函数,具有函数的基本性质,可以像普通函数一样调试;作为类的成员函数时,可以访问类成员,t...原创 2018-10-23 13:19:59 · 326 阅读 · 0 评论 -
插入排序、希尔排序、快速排序
插入排序: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 · 212 阅读 · 0 评论 -
自定义实现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 · 732 阅读 · 0 评论 -
c++ 实现全排列
中心思想:递归求子数组的全排列。具体操作:将每个元素都与子数组的第一个元素交换, 再求剩余部分的全排列, 求完后再交换会来,复原原数组。中止条件:low==high时,输出一种排列情况。#include <iostream>using namespace std;void swap(int &a,int &b){ int temp=a...原创 2018-10-10 11:11:20 · 5020 阅读 · 0 评论 -
二叉树的非递归遍历
节点: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 · 123 阅读 · 0 评论 -
快速排序
将最左边的点设置为基准点,小的放到左边,大的放到右边,然后递归直到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 · 160 阅读 · 0 评论 -
内存池
为什么需要内存池?C/C++下我们经常需要分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端:调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,调用free/delete,系统可能需要合并空闲内存块,这些会产生额外开...转载 2018-10-05 22:03:32 · 1205 阅读 · 0 评论 -
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 · 151 阅读 · 0 评论 -
c++函数模板、类模板
关于这一块,只说一点:类模板的实现需要和类的声明放在同一个文件中,即都放在.h文件中,否则会报错。原因: 因为在编译时模板并不能生成真正的二进制代码,而是在调用模板类或函数的CPP文件时才会去找对应的模板声明和实现,在这种情况下编译器是不知道实现模板类或函数的CPP文件的存在,所以它只能找到模板类或函数的声明而找不到实现,而只好创建一个符号寄希望于链接程序找地址。但模板类...转载 2018-10-04 22:05:41 · 202 阅读 · 0 评论 -
c++中的头文件(.h)和实现文件(.cpp)区别
转载:《c++中的头文件(.h)和实现文件(.cpp)区别》转载 2018-10-04 22:04:36 · 1333 阅读 · 0 评论 -
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 · 6315 阅读 · 0 评论 -
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 · 258 阅读 · 0 评论 -
将类封装成dll/lib的方法
引用:将类封装成dll/lib的方法:https://blog.csdn.net/oceanark/article/details/51902316转载 2018-08-09 09:21:25 · 1761 阅读 · 0 评论 -
C++ 函数指针讲解总结
引用C++那些细节--函数指针:https://blog.csdn.net/puppet_master/article/details/49368863转载 2018-08-09 09:20:33 · 111 阅读 · 0 评论 -
C++继承与派生
引用:C++继承与派生:https://www.cnblogs.com/TIMHY/p/7078423.html转载 2018-08-09 09:19:07 · 153 阅读 · 0 评论 -
C++ wstring和string相互转换的几种方法
方式一:采用ATL封装_bstr_t的过渡#include <comutil.h> #pragma comment(lib, "comsuppw.lib") string wstring2string(const wstring& ws){ _bstr_t t = ws.c_str(); char* pchar = (char*)t; ...原创 2018-07-26 13:46:29 · 22176 阅读 · 4 评论 -
C++ 产生随机数
引用:https://www.cnblogs.com/S031602240/p/6391960.htmlC++中没有自带的random函数,要实现随机数的生成就需要使用rand()和srand()。不过,由于rand()的内部实现是用线性同余法做的,所以生成的并不是真正的随机数,而是在一定范围内可看为随机的伪随机数。Rand单纯的rand()会返回一个0至RAND_MAX之间的随机数值...转载 2018-07-26 11:09:46 · 124 阅读 · 0 评论 -
C++ 动态链接库的动态加载问题
1、如何使用显示加载动态链接库加载方法:LoadLibrary GetProcAddress FreeLibrary#include <iostream>#include <Windows.h>using namespace std;#pragma comment(lib, "DllLoad.lib") int main(){ HINSTAN...原创 2018-07-26 11:06:23 · 2503 阅读 · 0 评论 -
VS2010 dumpbin工具的使用
在C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin目录下存在dumpbin.exe打开方法:先启动cmd, 然后定位到C:\ProgramFiles (x86)\Microsoft Visual Studio 10.0\VC\bin, 运行vcvars32.bat(或者直接将vcvars32.bat拖到cmd中), 最...原创 2018-07-26 09:45:53 · 381 阅读 · 0 评论 -
C++ 对中文字串的处理
1、wstring输出汉字需要设置一下wstring wstr2=Ansi_To_Unicode(str2);wcout.imbue(locale("chs"));wcout<<wstr2<<endl;2、如何搜索字符串中的汉字引用:https://blog.csdn.net/y601500359/article/details/44194175//...原创 2018-07-31 16:32:53 · 10125 阅读 · 0 评论 -
C++对Vector容器的相关操作
一、vector基本操作:引用:https://www.cnblogs.com/LGJC1314/p/6680054.html1.头文件 #include<vector>。 注:一定要加上using namespace std;2.vector对象的创建: vector<int/char/string/基本数据类型/自定义类型/结构体类型/.....>vec ;...原创 2018-07-31 16:49:50 · 236 阅读 · 0 评论 -
C++ 利用偏移量对文件进行操作
C++ 利用偏移量对文件进行操作对输入流操作:seekg()与tellg()对输出流操作:seekp()与tellp()C++中seep()和seekg()函数功能seekp:设置输出文件流的文件流指针位置 seekg:设置输入文件流的文件流指针位置函数原型:ostream& seekp( streampos pos ); ostream& seekp( s...原创 2018-07-31 16:29:12 · 4044 阅读 · 0 评论 -
Vector 简介和优缺点
引用:https://blog.csdn.net/taiyang1987912/article/details/50351827vector向量相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给...原创 2018-07-31 16:35:18 · 12062 阅读 · 2 评论 -
如何判断一个字符串指针是否为空(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 · 5449 阅读 · 0 评论 -
g++调试工具
g++调试工具:valgrind --log-file=val.log --leak-check=full ./serverhttps://blog.csdn.net/yuanfengyun/article/details/45246325原创 2018-08-23 19:58:23 · 433 阅读 · 0 评论