C++基础
陈默涵
这个家伙真的是个小白
展开
-
二维数组动态申请 malloc
在有些情况下,是在程序运行一段时间之后,才能知道数组的大小,这就需要动态的申请数组,在C/C++中常用的方法是malloc,最近的实验中用到了,便记录下来,废话少说,上代码:int **Arry;int m,n;cin>>m;cin>>n;Arry=(int**)malloc(m*sizeof(int*));for(int i=0;i{ Arry[原创 2016-01-18 20:11:15 · 599 阅读 · 0 评论 -
cin,cin.get(),cin.getline()
今天写代码的时候遇到了这样的问题,对于字符串或者是字符数组进行cin输入的时候,遇到空格就会结束,例如: string str1; char str[]; cin>>str; cin>>str1; 如果输入 we are happy. 但是实际上str 或者str1只是读入了we 因为cin遇到Enter、Space、Tab键时,读入结束。所以当要输入有空格的字原创 2016-06-17 18:39:21 · 413 阅读 · 0 评论 -
数组指针与指针数组
数组指针,顾名思义就是指向数组的指针,形如 char(*a)[4],就是变量名为a的指针指向一个字符数组。 如果输出char a[5]={‘A’,’B’,’C’,’D’}; char (*p3)[5] = &a; cout<<*p3; 则输出 ABCD cout<<**p3;则会只输出 A co原创 2016-07-14 21:36:43 · 309 阅读 · 0 评论 -
二维数组作为形参进行传递
在剑指offer中有道二维数组查找的问题,需要进行二维数组的参数传递,经过查阅知道对二维数组进行参数传递时,形参需要知道第二维的维度。 函数原型如下:bool search(int a[][4],int key,int rows,int columns){二维数组int a[4][4]={1,2,8,9, 2,4,9,12, 4,7,10,13, 6,8,11,15};原创 2016-06-17 15:50:58 · 601 阅读 · 0 评论 -
char类型的输入
今天在写程序的时候发现对字符类型进行输入数字时,会出现意想不到的意外。 例如char data; cin>>data; 当我想要输入数字123时,但是实际上data只是读入了1 如图所示 因为char只接受1个字符,没有啥子办法撒,只好换个类型了原创 2016-07-13 16:38:34 · 8000 阅读 · 0 评论 -
简单选择排序的代码实现与思考
简单选择排序,每次在n-i+1个记录中选取最小的记录,作为有序序列中的第i个记录,选择排序的时间复杂度是O(n2),空间复杂度是O(1),是一种稳定的排序算法。 代码如下:#include<iostream>using namespace std;int selectMin(int *a,int i,int len){ int minIndex=i; int min=a[i原创 2016-06-06 15:27:10 · 459 阅读 · 0 评论 -
二元查找树与排序的双向链表的转换
这道题目来自 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode { in原创 2016-04-24 20:07:55 · 490 阅读 · 0 评论 -
快速排序递归与非递归代码实现与思考
有的时候也是不知道是为什么,就像高中数学王老师说的那样,熟能生巧,不理解的要学会接受,慢慢就会理解了。大二的时候进行数据结构课程设计,我选做的一个是将快速排序的递归程序修改成非递归的形式,我记得我当时修改了好久好几,总是觉得这个非递归不能办到,但是当时根本没有想到用栈的思想,现在又重新学习数据结构,知道了递归与栈之间的关系。在剑指offer这本书中读到递归的本质就是栈结构,所以将递归函数拆成非递归的原创 2016-05-30 17:11:44 · 642 阅读 · 0 评论 -
i++与++i的区别--读书笔记
还记得大一的时候C语言老师说,现阶段,你们只需要记住前置++与后置++的区别就是在赋值的时候会有区别,其他的时候没有区别。他说的这句话在考试的时候百用不错。可是现在的阶段用这句话就不够用了,我查了 more effective C++把自己的一些体会记录下来。首先先贴上书上的代码自己用眼瞅一眼: 看到这段代码之后就会立刻明白前缀与后缀的不同: 1.返回值不同,前缀返回的是引原创 2016-05-11 16:41:48 · 280 阅读 · 0 评论 -
more effective C++的读书笔记 ——不要重载&&和||
在more effective C++中告诉我们不要重载&&和||。原因如下 1.重载&&或者||可能会违反短路计算法 2.重载是一个函数,而函数中没有告诉我们先要计算哪个参数,也是违背短路计算发。原创 2016-05-11 17:22:12 · 293 阅读 · 0 评论 -
二路插入排序的思考与代码实现
二路插入排序,如果第一个作为比较划分为两个部分的那个关键字选得好的话,那么移动的次数就会减少很多,比较的次数也会减少很多,但是需要有n个空间辅助,忽然想起本科的数据结构老师说要么用时间换空间,要么用空间换时间,后来又听说现在计算机内存都够用的,感觉又跑偏了……,没办法受酱油师兄的影响实有点大,话语间总有他的风格。 写这个程序的时候,有几点需要注意: 1.final指针和first指针不一样,fi原创 2016-05-11 11:41:12 · 617 阅读 · 0 评论 -
直接插入排序思考与代码实现
在直接插入排序中,在严蔚敏的书中说是需要设置哨兵,哨兵的作用是避免数组出界,所以在第一个位置设置哨兵,在经过思考这算法对我来说最值得学习的地方就是在比较的同时移动位置,这样会减少时间复杂度 void SIS(sqList &L,int len) { //这里有非常值得学习的地方,那就是在比较的同时直接进行移动 //这个是有哨兵的 if(len<=1) return;原创 2016-05-09 17:32:15 · 977 阅读 · 1 评论 -
折半插入排序的代码实现与思考
对于大量的数据,直接插入排序的比较与移动的次数会比较多,在直接插入排序的基础上,为了减少比较的次数,实现了折半插入排序。 折半插入排序主要分为两个部分,第一部分就是找到待排数字应该插入的位置,第二部分就是移动数据,将待排数据插入有序数列中。 数据结构和直接插入排序的数据结构相同,在折半插入排序的代码如下void BInsertSort(sqList L,int len){ //这个是利原创 2016-05-10 12:18:52 · 1639 阅读 · 0 评论 -
数组形参
在刷题的时候遇到了这样的一道问题在32位的机器中voidexample(characWelcome[]){ printf("%d",sizeof(acWelcome)); return;}voidmain(){ characWelcome[]="Welcome to Huawei Test原创 2016-03-25 00:23:06 · 751 阅读 · 0 评论 -
类类型的指针初始化与内存的释放
在刷题的时候遇到了这样一个问题,说是一个class A{ A(){};然后在main函数中定义了A*a;问是不是调用了构造函数,答案是并没有调用。因为只是声明了指针,并没有实例化对象,所以并不能调用构造函数,所以需要进行实例化即 a=new A;这样就可以调用构造函数了,因为使用new申请的空间是在堆区,是永久存在的,所以需要人工释放,即delete a,在释放的同时析构函数被调用#inclu原创 2016-03-23 14:04:28 · 1547 阅读 · 0 评论 -
数组写入Txt 与读Txt到数组 C++
因为需要保存一些二维数组的数据,所以在写入到Txt,与从Txt中读出到数组中还是不很理解,上网查了很久,发现很多都是讲了很多理论的,不适合刚刚入门的小菜鸟,于是我这只菜鸟就写了个菜鸟版的,其中讲述组的数据写入到Txt,和将TxT 中的数据读入到数组。废话少说直接上代码:#include#include#include #includeusing namespace std;原创 2016-03-05 15:19:55 · 14835 阅读 · 1 评论 -
动态申请二维数组
最近做的事情中用到了动态数组,但是小菜菜很是不是很熟悉,因此特地记录了下来,希望下次再用到的时候就不会忘了图像本身就是二维的数组,想对每个像素进行处理保存数据,动态的申请二维数组是少不了的,因此有了一下的代码: IplImage * src=cvLoadImage("C:\\Users\\CMH\\Desktop\\0001.png",0); //参数是0就会转化成灰度图原创 2016-03-04 20:39:17 · 579 阅读 · 0 评论 -
结构体数组指针memset
今天是用到了结构体指针,感觉自己真的是弱爆了,应该会有很多像我一样的菜鸟,会出现这样的错我,错误的代码是 strArry* GrientArr; memset(GrientArr,0,sizeof(strArry));然后就会出现错误之所以出现这样的错误是因为,GrientArr的指针是空指针,没有分配地址,所以编译器报错说没有进行初始化,也应该让指针分配有地址所以原创 2016-01-15 10:59:57 · 4796 阅读 · 0 评论 -
将char字符转换成int整型,字符串与整型之间的相互转换
int 与字符之间的转换int与字符串之间的转换原创 2016-08-03 11:41:23 · 44492 阅读 · 4 评论