学习
Bella_wx
这个作者很懒,什么都没留下…
展开
-
C++知识点
C++ 一、C和C++区别 关键字数量不同:c++有些关键字在C中没有,在C中可以作为函数和变量的标识 标准输入输出不同:C是printf和scanf,C++是cout和cin,cout和cin是类的实例,C++使用类来实现输入输出(C++仍旧可以使用printf和scanf) C++函数原型中可以声明一个或多个带有默认值的参数(从右向左连续) C++支持函数重载(...原创 2018-09-14 09:18:38 · 285 阅读 · 0 评论 -
二叉树的线索化及其迭代器
1.不借用栈或者队列来实现遍历的非递归,还有一种方法是线索化。 2.为了实现迭代器,面向对象。线索化也分为前中后序的线索化。 线索化有前驱和后继。 一棵树只能被线索化成一种方式。 树和图重要的区别是有没有环,树没有环,图可以有环。 当出现上面的问题时,是因为最后一个结点没有线索化,导致程序崩了。访问中序线索化后的二叉树: 现在我们就开始前序的线索化,注意二叉树同时原创 2017-11-13 23:47:21 · 366 阅读 · 0 评论 -
栈和队列
栈:#pragma once//template<class T>//静态//class Stack//{//protected:// T _a[N];// size_t _top;//但是这种定义方式不好//};//动态template<class T>class Stack{public: Stack() :_a(NULL) ,原创 2017-10-26 13:15:21 · 289 阅读 · 0 评论 -
迷宫问题
迷宫需要解决的问题: 1.如何找到通路? 首先在迷宫的入口点进入迷宫,分别别探测上下左右四个方向是否是通路(四个方向不通为1,通为0),如果是可通的方向将此方向的值改为2,接着再走下一个地方,直至走到四个方向中有一个方向是NULL,也就是走到迷宫的边缘,结束。 2.如何解觉没有通路的问题? 最初我们使用死循环来持续判断通路,但是如果迷宫没有通路,就需要判断条件path.empty(),判空条原创 2017-10-26 13:09:42 · 696 阅读 · 0 评论 -
STL list基本实现
pragma onceincludeincludeusing namespace std;template struct ListNode { ListNode*_next; ListNode*_prev; T _data; ListNode(const T&x) :_data(x) , _next(NULL)原创 2017-10-16 21:06:52 · 294 阅读 · 0 评论 -
文件压缩(c++)
有关于文件压缩的思想和问题。 http://note.youdao.com/noteshare?id=b90b140807dcfbd01d4fd85eff1e938eHeap.h文件(堆)#pragma once#include&lt;iostream&gt;#include&lt;vector&gt;#include&lt;assert.h&gt;using namespace std;templat原创 2017-11-01 21:03:27 · 1706 阅读 · 0 评论 -
表达式计算
表达式计算 例如: 2 - 3 * 4 + 5 这个表达式 下面是按照后缀表达式来写的程序,即表达式在栈中存放的顺序是2,3,4,’-‘,’*’,5’+’ 的顺序存放,碰到数值就压入栈中,当碰到运算符时候,先存入栈,当下一个运算符压入栈时比较两个运算符的优先级,如果两个运算符优先级相同,就继续入栈,知道所有的数值和运算符都入栈然后再按顺序使用top()来取栈顶,取两个值,和一个运算符就计算原创 2017-11-08 20:54:08 · 440 阅读 · 0 评论 -
智能指针
智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的指针指向同一对象。——摘自百度百科 简单来说,就是当同一个对象有多个指针指向它本身时,需要记录指向对象本身的指针个数,而智能指针就是利用引用计数的方式在记录指针,算作对于指针而言的管理层,有效的管理指针所指向的动态资源的原创 2017-11-08 19:47:01 · 345 阅读 · 0 评论 -
vector的基本模拟实现
vector内部相当于顺序表实现。pragma onceincludeincludeusing namespace std;template class MyVector { typedef T*Iterator; public: MyVector() :_start(NULL) , _finish(NULL) , _e原创 2017-10-09 21:34:47 · 373 阅读 · 0 评论 -
linux初学习
Linux重要指令: du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password 磁盘空间: du——显示目录或者文件的磁盘大小,以及计算软硬链接的源文件所占的磁盘空间大小。 df——显示磁盘使用情况的统计。 top——性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的原创 2017-11-06 14:05:54 · 236 阅读 · 0 评论 -
有关于模板的分离编译
模板分为模板类和模板函数。分析为什么模板不支持分离编译?首先,定义模板类需要template,而定义模板的目的就是为了在写代码的时候不需要考虑代码的多种类型,重复率高的代码段,降低效率还增加编译器的复杂性,为追求更高效的代码编译方法,使用模板来编写代码。 其次,既然是模板,在可以重复利用的代码段就不会考虑数据类型,但是当函数调用时候,即需要数据参与的时候就需要对模板实例化,这时候如果分离编译,就不原创 2017-11-06 14:15:21 · 388 阅读 · 0 评论 -
Linux目录
Linux下的重要目录 /proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp (1)/proc proc目录是基于内存的系统文件,通过proc目录可以查看计算机的信息 proc在运行时访问内核内部数据结构、改变内核设置的机制。 这个目录相当于Windows下的计算机系统信息查看以及进程动态查看等等。 这就是proc目录下原创 2017-11-22 17:23:55 · 277 阅读 · 0 评论 -
测试——Gtest
GoogleTest——Google C++单元测试框架(跨平台)gtest是开源工程的测试框架,不止针对特定的平台,使用的范围比较大,所以gtest的复用性和可移植性好。 单元测试一般由测试人员完成,目的是隔离程序部件,并证明这个单个部件满足预期 的功能 提供了丰富的断言、致命和非致命失败判断,能进行值参数化测试、类型参数化测试、“死亡测试; 可以自动发现测试,断言集,用户定义的断言,...原创 2018-09-13 15:21:35 · 575 阅读 · 0 评论 -
LeetCode——关于二级指针和++/--与*的例题
(1) ++比*的优先级高,所以先++,cpp是二级指针,++cpp表示cp+2是cp指针向后移动两次,指向c+2,c+2表示"POINT",所以(1)输出的是POINT(两次解引用结果是C的值) (2) 经过(1)后cpp指向cp的c+2,也就是cp+1的位置,经过++cpp就是cp+2的位置,(从这里开始cpp的位置就不变了)cpp指针解引用为cp的c+1,c+1就是指针 指向c中...原创 2018-09-05 07:54:26 · 784 阅读 · 0 评论 -
C语言知识重点
一、指针、数组 1.指针的概念:是指指针所存在的内存单元存放的地址,这个地址指向的是 变量单元,看似指针指向变量。 2.指针的使用 指针初始化:1. 0值常量表达式,将const的0值赋给指针 (const int a =0; int *p=0; ...原创 2018-09-05 07:46:36 · 544 阅读 · 0 评论 -
代码到程序运行过程
程序运行过程 1.编译 a.预处理:删除注释,宏替换,头文件展开,条件编译 b.编译:词法分析,语法分析,语义分析,符号汇总(生成汇编代码) c.汇编:将形成的汇编代码转为二进制代码,形成对应的符号表 2.链接:合并段表以及符号表的重定位,生成可执行文件 3.加载:将可执行文件加载到内存中运行链接:静态链接器加载:加载器...原创 2018-09-01 16:30:42 · 460 阅读 · 0 评论 -
小项目——通过http服务器访问网页
http服务器:1.目的:通过浏览器,发送一个标准的http请求,得到标准的http响应。 如果请求的是HTML网页,响应后可以在浏览器看到请求的网页内容。 接收请求: a)GET请求 b)POST请求 响应请求: a)根据url返回服务器上的静态文件(html/css/JavaScript/图片……) b)根据请求的参...原创 2018-08-19 21:34:07 · 2371 阅读 · 0 评论 -
剑指offer——从尾到头打印链表
学习了很久的链表结构,但是在一些链表面试题中却没办法很好的使用其他的相关数据结构来解决链表的问题,就比如在书中的链表逆序打印问题(这里指的是单向链表);输入一个链表,从尾到头打印链表每个节点的值。开始我的思路就是给链表额外添加一个指针,将指针指向链表中的每个节点的时候,改变节点的next指向,但是会有一旦改变某个节点的指向就会使得下一个节点找不到,从而不能实现逆序打印,如果在改变指向前保存下一个节...原创 2018-03-20 17:22:20 · 212 阅读 · 0 评论 -
Linux——开发工具
Linux编辑器1、在Linux下,常用的编辑器是vim和vi,除此之外,Linux编辑器还有默认编辑器nano,试着尝试了一下,我觉得nano的界面更简洁,控制起来与vim还是稍有区别的,在指令的执行上面,虽然在一开始输入的时候不需要像vim要先按I,可以直接输入,这一点我还是非常喜欢的,鉴于nano我还没有配置,如果以后有时间会试着配置一下nano。nano编辑器更接近于vim/vi,通过全屏输原创 2017-12-30 14:07:48 · 1238 阅读 · 0 评论 -
Linux目录权限
1.在Linux我们要进入一个目录首先要有读的权限才可以进去,当然如果想要更改某些东西,写的权限也是必不可少的。2.在目录中执行增删查的权限 cd——进入目录或者文件,需要读的权限,但是写的权限不一定需要。 touch——增加文件,需要有此目录下的读与写的权限,如果需要执行文件,还需要可执行的权限。 ls——显示某路径下的目录或者文件,需要可读权限。 rm——删除文件或者目录,需要读写权限。原创 2017-11-22 17:51:20 · 330 阅读 · 0 评论 -
vector和list的使用(顺序表和链表)
STL—-标准模板库:1.可复用的组件库 2.包罗算法和数据结构的软件框架 STL的六大组件 1.容器—-各种数据结构 2.迭代器—-扮演容器和算法的胶合剂 ↓ 区间:左闭右开,不支持比较大小。迭代器是单参数的构造函数 3.空间配置器—-负责内存空间的分配与管理 4.配置器—-一种修饰容器或者仿原创 2017-09-28 18:24:57 · 1042 阅读 · 0 评论 -
多态与继承
1.什么多态? 多态就是可以允许将父对象设置成为一个或者多个子对象相等的技术,赋值后,父对象就可以根据子对象当前的特性以不同的方式运作。 当使用基类的指针或引用调用重写的虚函数时,当指向父类调用的就是父类的虚函数,指向子类调用的就是子类的虚函数。 形成多态的条件: 1.虚函数的重写。原创 2017-09-18 18:40:59 · 443 阅读 · 0 评论 -
菱形继承
1.分析菱形继承的问题。 class Person{public: string _name;};class Student:public Person{protected: int _num;};class Teacher:public Person{protected: int _id;};class Assistant:public Studen原创 2017-09-24 20:15:32 · 214 阅读 · 0 评论 -
宏和函数的区别
宏:所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务。宏与函数的比较: 宏:比函数短而且快,比函数类型广,且宏不需要求参再传参。函数:可以调试,可以递归,不需要加许多括号以防止运算顺序出错,并且有类型检查,但需要求参后再传参。例:宏:#include#define PRINT(FORMAT,VALUE)int main(){原创 2017-05-04 20:57:18 · 272 阅读 · 0 评论 -
20174-13练习
binary_search()函数,要更深入的学习了解,关于某些控件没有返回值的问题,多加研究。判断是否是素数int main(){int i;int j;int count = 0;printf("请输入数字:");scanf("%d", &i);for (j = 2; j { if (i%j == 0) count++;}if (原创 2017-04-13 21:06:52 · 309 阅读 · 0 评论 -
练习
交换两数组#include#includeint main(){int a[10];int b[10];int c[10];int i = 0;printf("请输入第一个数组中的五个数值:\n");for (i = 0; i {scanf("%d", &a[i]);}printf("\n");printf("请输入第二个数组中的五个数值原创 2017-04-04 12:56:01 · 281 阅读 · 0 评论 -
小题练习
交换两值#include<stdio.h>#include<windows.h>int main(){int a , b , c ;scanf("%d%d", &a, &b);c = a;a = b;b = c;printf("%d %d\n", a, b);system("pause");return 0;}无临时变量交换两值..原创 2017-04-03 21:49:41 · 293 阅读 · 0 评论 -
关于for循环的再学习,以及逐渐了解程序标准输入
关于标准输入与非标准输入,虽然目前还没有全部了解,但已经逐步在学习fscanf()函数、fopen()函数等,但是对于其中的打开文件部分不太了解,比如说如何利用只读文本输出方法读出全部文件内容,应该是用数组存好全部字符后在输出还是只需要字符串输出就好,或者说读取的时候直接读一定数目的内容,用fgets(s, 100, fp);函数吗?以及可否使用fseek()函数查代码中的花括号是否成对数等问题。原创 2017-04-10 20:34:31 · 540 阅读 · 0 评论 -
初出茅庐
ABOUT MYSELFABOUT LEARNINGABOUT PROGRAMMINGABOUT COMPANGY..........原创 2017-03-29 19:39:35 · 1742 阅读 · 0 评论 -
TODAY'S PRATICE
问题:1.对于if语句用法还不够熟练。 2.不了解如何将输出界面更优化得到应有的界面形式。 3.对于scanf的了解也不够深入,加强。 4.数学功底不足。100~200间素数打印。#define _CRT_SECURE_NO_WARNINGS #include#includei原创 2017-03-30 19:36:12 · 260 阅读 · 0 评论 -
猜数字游戏
猜数字游戏#include<stdio.h>#include<stdlib.h>#include<time.h>#include<Windows.h>enum Option{EXIT,PLAY};void menu(){printf("*********************************\n");print...原创 2017-04-08 10:39:50 · 274 阅读 · 0 评论 -
程序编译过程图
程序编译过程转载 2017-05-04 21:16:50 · 663 阅读 · 0 评论 -
数组运算相关学习
数组的运算sizeof运算的是地址长,也就是一个对象或者类型所占的内存字节数。sizeof()中,只有sizeof(a)指的是数组总大小,&a指的是数组的地址。除此之外,其他遇到数组名都是指的是数组首元素地址#include#includeint main(){一维数组int a[] = { 1, 2, 3, 4 };printf("%d\n", sizeo原创 2017-04-23 15:23:11 · 317 阅读 · 0 评论 -
str-...的函数的模拟实现学习
int main(){int mid = strcmp(s1, s2);printf("%d\n",mid);return 0;int len = strlen("hello,world!");printf("%d\n",len);//strlen模拟实现:计算长度,/0为止char arr[10] = { 0 };strcpy(arr, "hello,world!原创 2017-05-08 17:55:38 · 248 阅读 · 0 评论 -
string类的引用计数的写时拷贝分析
写时拷贝(copy-on-write) 使用了引用计数的复制方法,在复制的时候会有一个变量来保存引用的次数,类似于: 假设A要管理S1这块空间,然后B也想要管理使用S1,写时拷贝不需要把S1复制一份再让B去管理修改,而是将B的指针指向S1这块空间,则S1就被A和B同时管理使用,减少了系统开支,提升了系统性能。 但是在程序结束调用析构函数进行释放空间的时候原创 2017-09-13 18:29:53 · 264 阅读 · 0 评论 -
c++动态内存管理
1.c的动态内存管理细节malloc 、calloc、realloc都可以动态内存开辟malloc开辟不初始化,而calloc开辟初始化为0,且两者返回值地址都为起始地址,返回类型为void*,用free()释放。realloc有两个参数调整的空间起始地址,要调整的大小>,必须要接收返回值。①拷贝释放原来的空间要开辟的空间不足>②直接加开辟的空间开辟足>2.c动态管理在原创 2017-08-05 22:14:56 · 254 阅读 · 0 评论 -
c++ 引用的学习
1.学习引用 (1)引用是c++对c的一个重要的扩充,在c++中,变量的“引用”就是变量的别用,因此引用又成为别名。(2)当声明了一个引用时,必须同时用另一个变量的名字来将它初始化。int i = 10;int &j = i;//这里的j即为i的引用,利用i对j进行初始化(3)相当于一个变量名会有许多“外号”一样,无论叫哪个名字或者说“外号”,都指的是同一个变量。#inc原创 2017-07-24 17:15:26 · 367 阅读 · 0 评论 -
c++相关基础学习
1.剖析C++是如何实现重载的? 在c++中,同名的函数可以完成不同参数列表,可同可不同的返回值的函数。例如:int Add(int a,int b){return a+b;}double Add(double a,double b){return a-b;} int main(){coutcout}//原创 2017-07-24 15:54:23 · 291 阅读 · 0 评论 -
字符串操作函数模拟实现
1.模拟实现strcpy2.模拟实现strcat3.模拟实现strstr4.模拟实现strcmpchar* my_strcpy(char* str,const char* p){assert(str != NULL);assert(p != NULL);char*s = str;while ((*s++ = *p++) != '\0'){原创 2017-05-31 10:07:40 · 299 阅读 · 0 评论 -
运用for循环在数组中进行 一些变换
调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。void Adj(int *arr,int len){int i,j;for (i = 0; i {for (j = 0; j {if (arr[i]%2 == 0原创 2017-05-09 22:33:00 · 863 阅读 · 0 评论