自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 C内存的补充理解

前述,对C++内存的管理存在一些疑问,今天偶然聊到,BSS段,DATA段,这些,有了新的理解。linux下size命令可以查看程序的内存分配,分为text,BSS,DATA三个区,不包括堆栈区,可能是堆栈区运行的时候分配吧。BSS(Block Started by Symbol),存放程序未初始化的全局变量/静态变量,初始化为0,包括在main外声明的全局变量,int a,静态变量,sta...

2018-09-15 16:07:28 151

原创 pthread多线程的练习

pthread库进行多线程编程pthread库的函数:1、pthread_create(),创建线程原型int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);返回值:0代表创建成功,否则是错误号...

2018-09-12 16:06:23 349

原创 Huffman编码实现

实现一个Huffman编码类//霍夫曼编码 #include <iostream>#include <vector>#include <string>using namespace std;struct node{ int freq; char c; node * left; node * right;};class Huffm...

2018-09-11 19:04:11 289

原创 贪心算法——活动选择

贪心算法,选择局部最优解活动选择问题,每个活动有开始时间s,结束时间f,找到最大兼容活动集。假设f按照大小顺序排好。每次就从当前结束时间往后选最近的开始时间的活动#include <iostream>#include <map>#include <vector>using namespace std;//void ActivitySel...

2018-09-11 11:09:35 805

原创 最长回文子序列

最长回文子序列:输入字符串的最长的回文子序列,例如输入 character,最长回文子序列是carac,是子序列,不是子串,从这个角度看,感觉跟前面的例子里,最长公共子序列很类似,借鉴那里的递归式:d[I,j]之间的最长回文子序列,如果I,j字符相同,回文子序列长度就等于d[i+1,j-1]+1,容易理解。如果I,j字符不同,回文子序列长度就等于max(d[i+1,j],d[I,j-1...

2018-09-11 10:53:33 974

原创 动态规划_钢条切割问题

动态规划的问题其实本质还是一种递归问题的优化,针对某一些递归问题,自上而下的求解会重复求解子问题的情况,(利用子问题图来发现这种情况),采用动态规划的方法解决这样的问题。一方面,通过对子问题进行记录备份,需要的时候查找,另一方面,采用自下而上的求解策略,对大规模的问题,首先求解每一个它要用到的小规模问题的解,然后记录,一路向上求解得到大规模问题。 钢条切割成小段以后,进行出售,不同...

2018-09-11 10:47:15 345

原创 内存管理大小端查看(union结构)

查看内存管理是大端还是小端,使用union结构,union结构是里面的各个数据共用一个内存//大小端查看#include <iostream>using namespace std;union un{ short int s; char c[sizeof(short int)];}; int main(){ un test; test.s=0x0102; ...

2018-09-11 09:59:54 206

原创 红黑树的模板类(发现了之前没留卫星数据模板,,)_枚举类型(总忘叫enum)

如题,,红黑树实现前头学习了容器的使用,发现了之前写的没加卫星数据的问题。改进了//红黑树,有卫星数据#include <iostream>using namespace std;enum Color{ red,black}; template <class Key ,class Type>struct node{ Key key; Type ...

2018-09-10 15:03:53 134

原创 二叉树的模板类

同样的问题,当时忘了卫星数据的模板了//二叉树的模板类#include <iostream>using namespace std;template <class Type>struct node{ Type value; node<Type> *left; node<Type> *right; node<Type&g...

2018-09-10 14:59:11 593 1

原创 unordered_map(哈希表)与map(红黑树)容器的方法记录

//unordered_map的方法记录#include <iostream>#include <unordered_map>#include <map>using namespace std;int main(){ unordered_map<int,string> test;//声明 test.insert(make_p...

2018-09-10 14:57:36 377

原创 链表数据结构的模板类

//链表数据结构的模板类#include <iostream>#include <assert.h>using namespace std;#define N 10template <class Type>struct node{ Type value; node<Type> *next; node<Type> *p...

2018-09-10 14:48:30 200

原创 栈数据结构的模板类

栈数据结构的类;栈就是先入后出,//栈模板类#include <iostream>#include <string.h>#include <assert.h>using namespace std;template <class Type>class stack_class{ private: int max_len;//...

2018-09-10 14:39:42 251

原创 获得顺序统计量的选择算法(数组中第i顺序的元素)

假设数组是互异的,选择算法获得数组中的顺序统计量,期望时间为O(n),最坏时间为O(n平方)算法有一些与快速排序相似,对数组选定参考元素左右分类以后,左边是小于参考元素reference的,右边是大于reference的,然后检查一下reference的位置,是i就对了,不是i就递归调用。同样可以通过数组随机重排来达到平均期望时间 //获得顺序统计量的选择算法#include &lt...

2018-09-10 14:34:36 735

原创 计数排序

前面排序是通过比较排序,下界就是O(nlogn)计数排序用另外的临时空间,通过运算进行排序,可以达到线性时间O(n)大体思路是:找到最大的数max,申请临时空间c[max+1](包括0),然后遍历一次a,根据a数组的内容在c数组中记录该数出现的次数,(a数组的内容就是c的索引,如此计数),然后c再处理一次,累计,最后倒着开始,把a数组中每个元素,根据在c里面记录的顺序,填充到输出b数组里面...

2018-09-10 11:04:50 102

原创 堆数据结构的模板类_类的创建需要注意的地方

完成一个之前堆数据结构的模板类,关于类的创建需要注意的:默认构造函数,没有声明编译器会自动创建,创建类的时候调用默认构造函数。默认构造函数可以使带默认参数的。 析构函数,没有声明编译器会自动创建,对动态分配来说会造成内存泄漏等问题 复制构造函数,类作为函数参数(按值传递)的时候会新建临时副本,就需要调用复制构造函数,之后还会调用析构函数,就会产生问题,复制构造会单纯复制非静态成员(也就是动...

2018-09-10 10:37:04 169

原创 堆数据结构与堆排序

堆数据结构堆(二叉堆)是近似的完全二叉树,最底层允许不满,堆的相关,数组长度length,heap_size有效长度(堆的有效元素,未排序的数目)。Heap_size<length堆虽然很像二叉树,但是我的理解就是用二叉树的逻辑,但是最主要的区别在,堆的存储是用数组,只是用下标来帮助理解堆的存储结构从上往下,按顺序存储。然后是几个相关的操作,1、取父节点,取左...

2018-09-10 10:04:05 556

原创 随机数产生与数组随机化

随机数产生与数组随机化,的方法//随机数产生与数组随机化#include <iostream>#include <stdlib.h> #include <time.h>using namespace std;void Swap(int & a,int & b);void RandomInPlace(int a[],int n);...

2018-09-10 09:36:10 197

原创 二分法,最大子数组问题(分治法)

二分法简单,从排好序的数组里找数。时间复杂度就是O(logn)//二分法查找#include <iostream>#define N 100using namespace std;inline void Swap(int &a,int &b);void FastSort(int a[],int left, int right);bool Find...

2018-09-09 18:34:56 479

原创 快速排序,归并排序

快速排序是原址排序思路是,找一个参考元素,然后把小于参考元素的放左边,大于参考元素的放右边。再递归调用。再进行之前可以先把数组随机化一次,可以达到平均时间复杂度O(nlogn)这里有两种思路:一开始是,对数组a[left,,,right],参考元素选right(或left),然后i从left位置开始,向右搜索,找到小于参考元素reference的数,index记录当前插空的位置,把...

2018-09-09 16:40:18 817

原创 插入排序,选择排序

插入算法,类似打扑克的摸手牌,手上已有的是假设已排序的,新来的找到自己的位置,其他的给新来的腾个位置动一下窝,算法复杂度是O(n平方)选择算法,每次都遍历一下找到最小的,然后按顺序放进去。算法复杂度我觉得也是O(n平方),,//插入排序与选择排序#include <iostream>#include <stdlib.h> #include <tim...

2018-09-09 15:31:02 113

原创 欧拉题10,11,12,15,16——15分治,16字符加法乘法

欧拉题10The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.Find the sum of all the primes below two million.2000000以下素数的和//2000000以下素数的和#include <iostream>using namespace std;inlin...

2018-09-09 11:34:35 175

原创 new的异常处理

c++new运算符,如果分配内存失败了,不会像malloc一样返回NULL指针,所以判断返回NULL指针的方式判断内存分配是不合适的。另外,有些网上说new分配内存分配的实际是自有内存,并不一定像malloc严格是堆内存,也可能是栈内存(存疑,因为测试的都跟堆内存紧挨着)new分配的内存处理,抛出std::bad_alloc异常#include <iostream>#i...

2018-09-09 10:38:47 2321

原创 欧拉计划(三)7,8,9

欧拉题7By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.What is the 10 001st prime number?第10001个素数//第n个素数#include <iostream>using nam...

2018-09-08 22:42:47 156

原创 欧拉题(二)4,5,6题

欧拉题4A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.Find the largest palindrome made from the product of two 3-...

2018-09-08 22:34:32 349

原创 欧拉题专栏

欧拉题1If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.Find the sum of all the multiples of 3 or 5 below 1000.1000以下...

2018-09-08 22:13:39 163

原创 new malloc的区别

从使用上来说1.malloc需要自行计算分配的字节数,平常用sizeof(Type)*num来计算,new只需要声明需要的数目即可。2.malloc返回的是void*,需要自行再指针类型转换一下,new则不需要3.new声明对象的时候会调用对象的构造函数(一次申请多个的时候调用默认构造),析构函数,malloc则只分配内存。4.分配失败的时候,malloc返回空指针,new则是抛出...

2018-09-08 14:45:02 96

原创 C++异常处理

一种是直接调用abort(),中断程序,不够灵活 另一种用try,catch的形式即,try{...if() throw ...}catch(Type){...}catch(Type1){...}..catch(...){...}多个catch捕获try模块的throw后的内容具体来说,函数遇到throw,就会终端try模块的运行,根据thr...

2018-09-07 16:50:22 148

原创 C/C++几个预定义的宏_错误处理

#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n", \ __LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)上述一段错误处理的代码,里面用到几个C/C++预定义的宏ANSI C标准中有几个标准预定义宏(也是常用...

2018-09-06 21:28:42 922

原创 C++短路操作

所谓短路,就是用||,&&,这些双目操作符,实现一些if的判断。因为这些操作符具有的一个特点是:先计算左边的表达式值,能得到值就不计算右边了,不能再计算右边比如:expression1||expression2,当expression1计算得到1后,可以确定是true,就不再计算而直接下一局,&&类似,前面得到0就停下向下了 #include ...

2018-09-06 21:06:46 1579 1

原创 C++查看数据类型

#include <typeinfo>#include<iostream>using namespace std;int main(){int a[2][2][2]={{{1,2},{3,4}},{{5,6},{7,8}}};int (*p)[2][2];int b=10;int *p1=&b;short *(pp[2][3]);cout&...

2018-09-06 17:00:55 23459

原创 centos找到ifconfig命令,并添加环境变量的方法(文件)

Ifconfig命令Yum search ifconfig找到ifconfig命令在哪个包里面,得到 然后安装net-tools包就可以 注意输入Y,不能直接回车然后就有ifconfig命令安装在/sbin里面了  在 Linux CentOS 系统上安装完 MATLAB 后,为了使用方便,需要将 matlab 命令加到系统命令中,如果在没有添加...

2018-09-06 15:51:51 1087

转载 linux调用同步_异步,阻塞_非阻塞

https://blog.csdn.net/penzo/article/details/5995834步和异步:与消息的通知机制有关。   本质区别 现实例子 同步模式 由处理消息者自己去等待消息是否被触发 我去银行办理业务,选择排队等,排到头了就办理。 异...

2018-09-06 15:45:26 472

原创 C++中指针的引用——在函数中改变指针的值+linux下C++程序送入参数

问题的原因是,在对地址进行map的时候,发现封到函数中,不能改变地址的值,void BaseVirtMap(unsigned int *map_base,unsigned int *virt_addr){ int dev_mem_fd; if( ( dev_mem_fd = open( "/dev/mem", O_RDWR | O_SYNC ) ) == -1 ) FATA...

2018-09-05 20:24:20 1241 2

原创 杂项_Zyboard 文件系统_驱动的编写_SDK的交叉编译器移植_后台运行与查看进程_Tmeval结构体记录时间

zedboard文件系统制作利用ramdisk,可参考参考文档学习了把生成的uramdisk.image.gz解压出来:由于有64K头,所以先删除头dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=1生成ramdisk的压缩包,然后对其进行解压缩gunzip ramdisk.iamage.gz得到文件系统,然后...

2018-09-05 20:10:12 249

原创 指针数组与数组指针,局部数组声明与指针声明的内存上的不同之处

char a[5] = {'a','A','c','C','d'}; //cout<<a<<endl; printf("a=%d\n",a); //cout<<&a<<endl; printf("&a=%d\n",a); //cout<<*(a+1)<<e

2018-09-05 19:26:56 409

原创 C++内存管理

 内存区的分类与例子 一个由C/C++编译程序占用内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量值等。其操作方式类似于数据结构中栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中堆是两回事,分配方式倒是类似于链表.3、全局区(静态区)(static)—,全局变量和静态变量...

2018-09-05 14:38:29 83

原创 socket本地通信

//socket本地编程,服务器端#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include <sys/un.h>#include<string.h>#include<arpa/ine...

2018-09-05 09:43:47 3033

原创 socket编程2——recv与send的一点理解测试

//PC间的通信测试recv与send函数,服务器端#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<string.h>#include<arpa/inet.h>#include&...

2018-09-05 09:40:24 422

原创 socket编程网络与本地

socket网络编程//ARM嵌入linux与PC的通信程序 int fd = 0; int newfd = 0; int addr_len = sizeof(struct sockaddr_in); int recv_len = 0; int q=0; int z=0; int len; //struct array y1,y2; ch...

2018-09-05 09:35:08 426

原创 errno变量的查看

在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno的值...

2018-09-04 22:03:00 997

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除