- 博客(39)
- 收藏
- 关注
原创 c结构体中char[0]的作用-实现数组扩展
struct Data{ int len; char data[0];}原来的data中没有元素,不分配内存,结构体Data的大小为4假如现在分配15字节的内存,并且将指向这块内存的指针强制转换为(Data*):Data* pData=(Data*)malloc (sizeof(Data)+11)malloc申请了15个字节的连续内存空间,强制...
2018-09-22 11:05:06
1693
原创 c++一个诡异的问题,哪位大神能解答,救命啊
file3.txt是50*50的char字符,这里最后的输出的0是什么鬼啊!!!fscanf还能把m变成0???为什么m放在里面定义就可以了?为什么把a[50][50]改成a[55][50]就可以了???...
2018-09-02 16:58:22
405
2
原创 利用动态规划计算以下矩阵连乘:A1(20*25)、A2(25*5)、A3(5*15)、A4(15*10)、A5(10*20)、A6(20*25)
利用动态规划计算以下矩阵连乘:A1(20*25)、A2(25*5)、A3(5*15)、A4(15*10)、A5(10*20)、A6(20*25)A (A1A2A3)((A4A5)A6)B (A1A2)((A3(A4A5))A6)C (((A1((A2A3)A4)A5)A6)D (A1A2)(((A3A4)A5)A6)A的计算次数:(A1A2A...
2018-08-31 10:00:34
5911
原创 第一趟快速排序之后的结果
使用快速排序算法对序列9,1,3,8,23,5,7,10,29,19进行排序,基准数取9,则第一趟排序后的结果为:7,1,3,8,5,9,23,10,29,191、先从后往前搜索小于9的数和9交换得到: 7,1,3,8,23,5,9,10,29,192、再从往前搜索大于9的数和9交换得到: 7,1,3,8,9,5,23,10,29,193、再从后往前搜索小于9的数和9交换...
2018-08-31 09:42:45
13167
6
原创 c++之#define对前置和后置加加的不同表现分析
可以看到64=3*5+8*5+8+1可以看到define只做简单的替换,所以会自加两次而inline会先计算自加的表达式的值,然后保存自加后的,因为是前置加加所以先乘后置加加同理 ...
2018-08-30 18:08:08
249
原创 下列程序输出结果-考数组名和&数组名
可以看到&a=0x001dfc18,&a+1=0x001dfc2c可以看到相差2c-18=(2*16+12)-(1*16+8)=44-24=20刚好5个int整型大小所以&a+1指向a[4]=5的下一个int内存所以*(ptr-1)为5
2018-08-30 16:54:05
274
原创 c++基础之memset使用、memset置为非0情况
1、memset数组、memset非0可以看到当memset非0时会出现乱码2、memset结构体
2018-08-30 10:58:59
1914
原创 c++基础之结构体初始化和memset的使用
1、用构造函数初始化可以看到可以在结构体的构造函数对结构特的每一个成员进行初始化也可以使用memset对结构体的每个成员一次性初始化2、定义的时候初始化 ...
2018-08-30 10:39:21
2565
1
原创 c++基础之vector、数组初始化
默认定义了一个size为5初始值全为0的vector定义了size为5的初始值全为1的vector v2如果要指定vector中的每个值,可以通过先定义一个数组,把数组首地址和要传的最后一个元素的下一个地址传进去,比如可以看到将a的起始元素开始到第四个元素之前的元素都给了v3下面来看看二维vector初始化可以看到vv初始化为5个size为0的vecto...
2018-08-30 10:11:31
24051
原创 c++基础之for_each使用和源码
首先,要使用for_each要包含文件algorithm上面对小圆括号()进行了操作符重载可以看到for_each的内部实现机制为对每个元素实现_Func()并且会自动用每个元素替代函数中的形参为了更简单的看到for_each的用处,可以比较下面两段代码 ...
2018-08-30 09:19:39
817
原创 c++基础之queue和deque比较
1、queue可以看到是从队首弹出,先入先出并且queue只能从队首删除元素2、deque可以看到deque可以访问两端但是只能修改队头而deque可以访问两端并且可以在队首和队尾删除和插入元素...
2018-08-29 20:13:43
14986
3
原创 c++基础之默认参数的函数调用
1、可以看出,调用时可以只指定未被赋值的参数2、可以看到10以换行符的形式赋给了b,所以输出为3、4、可以看到,如果想为c重新赋值,必须把a,b也重新赋值有关默认函数声明和定义:1、如果函数声明有默认参数,则定义不需要再给默认参数提示出错重定义参数这样就可以了2、默认参数之后的所有变量必须有默认参数提示默认参数不是最后...
2018-08-29 18:35:31
1605
原创 白话解释求字符串"mabbnmnm"的哈夫尔曼码
首先统计各字母出现频率,为了用最少的编码位数,尽量把出现频率高的字母放在树的最高位,下面来看怎么做的:m:3n:2a:1b:2排序为:字符 a b n m频率 1 2 2 3低的在树的最下面,先合并,权值相加,a和b合并,权值1+2=3假设a和b合并的新节点为c相加后的是3,n的权值是2,所以a和b...
2018-08-29 17:36:44
489
原创 c++基础之getline,cin.getline处理换行符的区别
cin.getline()函数是处理数组字符串的,其原型为cin.getline(char * , int),第一个参数为一个char指针,第二个参数为数组字符串长度。getline(cin,str)函数是处理string类的函数。第二个参数为string类型的变量。 可以看到cin不会丢弃换行符,它会把换行符留在输入队列中,所以getline遇到的换行符,把换行符替换成'\0'所...
2018-08-29 10:40:19
18763
7
原创 c++基础之STL函数strtok以逗号和分号切割字符串为数字
前几天做头条笔试合并重复区间需要用到从带有逗号和分号的字符串中提取出数字比如从字符串: "1,10;32,45"中提取出数字1,10,32,45需要用到STL 库函数strtok使用如下:需要注意的几点:1、sscanf用来把指针指向的内容存到数组中2、16行如果写成:char* s=str.c_str();不加char*强制转换的话会报错:因为此时的...
2018-08-29 09:46:25
2320
原创 c++ 基础之STL函数sccanf易错点
可以看出sscanf参数为string和char* p都不行,必须传入指针,并且该指针指向的内存内容可以改变可见p能把内容以字符串的格式给str可以看到如果格式改成%d则赋值失败可以看到原来的字符串如果含空格则只把第一个空格出现前的所有字符赋给str ...
2018-08-29 08:58:08
671
原创 c++基础之cout string类对象
如果包含了<string.h>如果包含了<string>可以正常输出如果包含了<string.h>并且将要输出的字符串通过c_str()转换为c字符串再输出也可以 ...
2018-08-28 17:44:52
810
原创 c++基础之string对象可修改和char*="hello"不可修改
可以看到两个string类对象的内容是可以修改的可以看到p指向的字符串"hello world"是不可以修改的
2018-08-28 17:40:42
1427
原创 c++基础之char *,char[]和string相互转换
可以看到直接把string转换为char *出错,下面来看看把char*转换为string会怎么样可以看到p指向常量字符串不可修改,str得到了p指向的内容作为自己的内容,p和str的地址也不一样假如p是null又会怎么样呢?可以看到char *指向的如果不是空,那么char *可以自动转化为string,把char*指向的内容复制了一份赋给str接下来看看st...
2018-08-28 17:19:17
35596
4
原创 win32 pystaller打包py文件为exe文件所有问题详细记录包括安装问题,找不到动态库等
1,打开网址:pyInstalller下载网址2,还需要下载一个pywin32,pywin32网址,注意选择Python对应版本的下载。这一步有个坑提示找不到python3.5-32的注册表, win+R打开注册表现在是改好了的,原来的是灰色的,命名为3.5所以会提示找不到注册表,改成3.5-32就好了3. 生成的exe文件在dist文件夹中3. 生成了exe文件点击如...
2018-08-26 19:15:19
724
原创 c++基础之1==2==3和a=b=1
可以看出==操作符是从左到右的,1==4的结果为0,0==4的结果为04==4的结果为1,1==1的结果为1==操作符是从右到左的,b=3的结果为3,a=3的结果为3同理b=0的结果为0,a=0的结果为0...
2018-06-04 09:57:33
275
原创 C++基础之子类调用父类方法
结果:和结果效果一样,想要说明一下三点:1. vs里成员函数的函数体就算只有一条语句也要加花括号,如第7-9行2. 25行想通过子类调用父类函数fun(int i),通过B1.A::fun(1),看到过有的人说用B1.parent::fun(1) 试了下发现出错3. 子类和父类函数名一样的函数fun,如果参数不一样,不管加不加virtual,当子类调用fun()时,会先在子类中找,找不到会报...
2018-05-29 20:50:52
39359
3
原创 c++实现头插法就地反转
#include <iostream>using namespace std;typedef struct ListNode{int data;ListNode *next;};void print(ListNode *head){while (head != NULL){cout << head->data;head = head->n...
2018-05-22 10:34:51
313
原创 c++实现就地反转链表
#include <iostream>using namespace std;typedef struct ListNode{int data;ListNode *next;};ListNode* reverseList1(ListNode *head){if (head == NULL)return head;ListNode* dummy = new List...
2018-05-21 22:24:20
432
原创 c++实现链表反转
#include <iostream>using namespace std;typedef struct ListNode{int data;ListNode *pNext;}Node;void print(Node *pHead){if (pHead != NULL){while (pHead->pNext != NULL){cout <<...
2018-05-21 21:28:20
244
原创 c++实现链表公共节点
#include <iostream>using namespace std;typedef struct ListNode{int data;ListNode *next;}Node;void print(ListNode *head){while (head){cout << head->data;head = head->next;...
2018-05-21 21:26:37
227
原创 京东笔试C++-买糖果与背包问题比较
输入输入中有多组测试数据。每组测试数据的第一行有两个整数n和v,1<=n<=10^5, 1<=v<=10^9,n为可供选购糖果数量,v为货车的容量。随后n行为糖果的具体信息,第一行编号为1,第二行编号为2,以此类推,最后一行编号为n。每行包含两个整数ti和pi,1<=ti<=2, 1<=pi<=10^4,ti为糖果所属的序列,1为A1、2为A2,pi...
2018-04-21 11:02:40
480
原创 被调函数必须在主函数之前声明
fun1(){ fun2();}void fun2(){ }会报错找不到标识符fun2查资料说因为首次执行到fun2()时没有找到fun2的返回值,默认为int类型,之后执行到fun2()时候又找到了一个返回值为void的同名函数fun2,会报错,解决办法:1. 在fun1()之前声明fun2(),告诉编译器fun2的返回类型。void fun2();fun1(){ fun2()...
2018-04-21 10:25:05
4608
原创 c++学习---vector容量
今天在给vector分配内存时,发现出现错误因此在给count resize大小时,如果超过了1073741823会报错
2018-04-21 10:18:25
129
原创 京东笔试买糖果算法题目解析及误区分析
输入 输入中有多组测试数据。每组测试数据的第一行有两个整数n和v,1<=n<=10^5, 1<=v<=10^9,n为可供选购糖果数量,v为货车的容量。随后n行为糖果的具体信息,第一行编号为1,第二行编号为2,以此类推,最后一行编号为n。每行包含两个整数ti和pi,1<=ti<=2, 1<=pi<=10^4,ti为糖果所属的序列,1为A1、2为A2,p...
2018-04-20 17:08:09
473
原创 2018广联达c++工程师实习笔试题
广联达笔试:1. ABCD手电筒过河2. 输入两个独立文本文件,各自按从小到大顺序排序,合并,总排序从小到大3. 斐波那契数列,又称黄金分割数列4. 顺时针打印矩阵...
2018-04-20 16:50:08
876
原创 C++学习---背包问题详解+配图解析
可参考https://blog.youkuaiyun.com/livelylittlefish/article/details/2186206背包问题可以简述为,前i件物品有对应的重量w(i)和价值v(i),要在满足不大于背包容量的情况下装入总价值最大的物品。如输入4 102 3 4 71 3 5 9四件物品,重量分别为2 3 4 7,对应的价值分别为1 3 5 9,背包容量为10最大价值表如下:代码如下:#...
2018-04-20 16:42:01
964
原创 c++学习--释放二维数组
有int arr[rows][cols]//先释放a[i]for (int i=0; i<rows;i++){ delete[cols] arr[i]; arr[i]=NULL;}delete[] arr; //最后释放arr
2018-04-20 16:29:44
787
原创 fopen与fprintf的使用
1. #include <stdlib.h>2. fopen和fprintf都是对该cpp文件所在项目名称下的项目目录下的文件进行操作。例如项目名称为chapter,该文件夹下有个项目目录文件夹为chapter,那么应该把要读的文件放在chapter/chapter下面才可以找到。类似的要写入的文件如果在写入之前就已经存在,那么也是存在于chapter/chapter,如果没有,则在该...
2018-04-20 16:24:07
1447
原创 C++学习---二维数组和数组下标小于0
int a[][4]等效于int (*a)[4],但不等效于int **a如果定义了int arr[5], arr[-1]是有效的,arr[5]会报错。
2018-04-20 16:02:51
667
原创 c++学习笔记-指定二维vector大小
在对二维vector如 vector< <vector<int>> vec用push_back存放数据时,如vec[i].push_back()会出现下标越界。这是因为此时的vec为空,无论是vec还是vec[i]的size都是0,这个时候取vec[i]会出现下标越界情况。解决办法是在push_back之前先定义vec的长度,如vec.resize(5); 尽管不指定...
2018-04-20 15:58:01
7966
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人