
C++学习
心向暖
去奋斗,去追求,去发现,但不要放弃。
展开
-
漫画理解动态规划
转自http://www.sohu.com/a/153858619_466939————————————题目:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。比如,每次走1级台阶,一共走10步,这是其中一种走法。我们可以简写成 1,1,1,1,1,1,1,1,1,1。再比如,每次走2级...转载 2019-03-19 11:12:30 · 290 阅读 · 2 评论 -
CPU调度的最小单元
资源分配的最小单位是进程,而CPU调度的最小单位是时间片!进程是资源分配的最小单位,线程是CPU调度的最小单位。原创 2019-03-24 11:27:13 · 5930 阅读 · 1 评论 -
static关键字
1.隐藏。static函数,static变量均可。当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。2.保持变量内容的持久。(static变量中的记忆功能和全局生存期)存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的...原创 2019-03-24 11:32:38 · 401 阅读 · 0 评论 -
new/delete与malloc/free的区别
new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持; 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的大小。 new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回voi...原创 2019-03-24 11:40:39 · 150 阅读 · 0 评论 -
STL之accumulate()
accumulate(A,A+N,num,multiplies<int>)) //数组累乘 ,再和n相乘accumulate(A, A + N, num); //数组累加 ,再和n相加别忘了把头文件 #include<numeric>包含进来#include<iostream>#incl...原创 2019-03-27 14:50:59 · 784 阅读 · 0 评论 -
已知到达时间三个进程求周转时间(先来先服务)
假设有a.b.c.d.e五个进程,其到达时间和服务时间由下表给出,计算在采用先来先服务调度算法和最短作业优先算法的平均周转时间和平均带权周转时间,并指出他们的调度顺序及完成时间。进程 到达时间 服务时间 a 0 4 b 2 7 c 5 4 d 8 3 e 10 2 ...原创 2019-03-27 20:47:22 · 15579 阅读 · 0 评论 -
短作业优先
假设有a.b.c.d.e五个进程,其到达时间和服务时间由下表给出,计算在采用先来先服务调度算法和最短作业优先算法的平均周转时间和平均带权周转时间,并指出他们的调度顺序及完成时间。进程 到达时间 服务时间 a 0 4 b 2 7 c 5 4 d 8 3 e 10 2 ...原创 2019-03-27 21:25:05 · 2619 阅读 · 0 评论 -
c和c++的区别?
C是面向过程的语言,而C++是面向对象的语言; C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还有new/delete关键字;(关于malooc/free与new/delete的不同又可以说一大堆,最后的扩展_1部分列出十大区别); 接下来就不得不谈到C中的struct和C++的类,C++的类是C所没有的,但是C中的struct是可以在C++中正常...原创 2019-03-27 22:12:33 · 948 阅读 · 0 评论 -
C/C++专项练习
实参可以是常量、变量或表达式,但是形参只能是变量。友元函数是一种能够访问类中的私有成员的非成员函数,一个类的友元函数对类成员的访问能力等同于类的成员函数,即能访问类的所有成员。五个基本原则:单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职...原创 2019-04-02 11:46:02 · 509 阅读 · 0 评论 -
关键字
true、false、null都不是关键字goto、const、是保留的关键字abstract continue for new switch default if package synchronized ...原创 2019-03-28 19:51:26 · 210 阅读 · 0 评论 -
字节序
计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。 小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。看到某大佬一个超级形象的图为什么会有小端字节序?...原创 2019-03-28 22:43:53 · 170 阅读 · 0 评论 -
case语句两个case对应操作相同
MATLAB:int idx;switch (idx){ case 1,2,3,4: { ...... break; } case 5: { .... break; }}C:switch (idx) { case 1: case 2: case 3: case 4: {...原创 2019-05-04 14:50:15 · 8812 阅读 · 1 评论 -
排序算法
//排序算法,从小到大#include <iostream>using namespace std;void swap(int &a, int &b){ int temp; temp = a; a = b; b = temp;}//选择排序void selectSort(int array[], int len){ cout <...原创 2019-05-07 09:57:44 · 116 阅读 · 0 评论 -
用数组实现队列
思路:定义变量begin,变量end,弹出时从begin位置出队,从end位置入队。push():如果size1的值大于数组的大小时,说明队列已满,报错。否则,加入到数组end位置,然后end后移,如果end大于数组的大小,让end变为0,继续进行push操作。(因为前面可能会有出队造成的空位)pop():如果size1等于0,说明队列中没有数了,报错。否则(队列...原创 2019-05-09 22:14:43 · 314 阅读 · 0 评论 -
C++中string能不能用cout输出?
偶然发现,有时候C++中不能用cout输出string,有时候string又可以用cout输出。头文件CString、string和string.h的区别:CSting:CString是MFC或者ATL中的实现,是MFC里面封装的一个关于字符串处理的功能很强大的类,只有支持MFC的工程才可以使用。string:string类既是一个标准c++的类库,同时也是STL(S...原创 2019-06-10 10:18:11 · 4066 阅读 · 0 评论 -
设计模式(常见的)
单例模式:单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有三个要素:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。为了保证单例模式在多线程下的线程安全,一般采用下面几种方式实现单例模式:1)饿汉式2)懒汉式C++的实现有两种,...原创 2019-06-25 22:27:15 · 119 阅读 · 0 评论 -
内存对齐
内存对齐规则:按照成员的声明顺序,依次安排内存,其偏移量为成员大小的整数倍,0看做任何成员的整数倍,最后结构体的大小为最大成员的整数倍。内存对齐原因:1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐...原创 2019-06-30 10:48:58 · 104 阅读 · 0 评论 -
公钥、私钥、数字签名、数字证书
1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。5)鲍勃给苏珊回信,决定采用"数字签名"。他写...转载 2019-07-16 20:41:28 · 249 阅读 · 0 评论 -
贴纸应该测试什么功能? 怎么测响应时间?怎么实现自动化测试?
贴纸应该测试什么功能?人脸识别的准确性+响应速度快。怎么测响应时间?从用户角度来说,请求的响应时间包括:用户界面发送请求的时间 + 网络传输时间 + 服务端处理时间 (包括数据层的处理时间)+ 网络传输时间 + 用户端展示返回结果的时间,如下图:从概念上来说:响应时间,就是指应用系统从发出请求开始到客户端接收到所有数据所消耗的时间。该定义强调的是所有数据都已经被呈现在...原创 2019-03-27 09:59:19 · 742 阅读 · 0 评论 -
电梯的测试案例
看到这道题,只考虑了最最基本的功能,现在看来,自己思考问题还是太片面了。电梯上行/下行/空载时不同楼层人按电梯的反应医院场景下,电梯里面人遇到紧急情况的优先级,可以控制在哪层不停。开门关门键的功能超重提示1.功能:上升、下降、停止、开门、关门、梯内电话、灯光、指示灯等;2.性能测试:反应时间、关门时间、速度(是否造成人体不适)3.压力:超载、尖锐物碰撞电梯壁等...原创 2019-03-26 22:09:25 · 748 阅读 · 0 评论 -
反转链表---递归
一提起反转链表,非递归方式比较常用。但递归反而代码比较简洁,只需要寥寥数行。巧在从链表尾节点开始操作。Node * reverseList(List head){ if(head == NULL || head->next == NULL) { return head; } else { Node *newh...原创 2019-03-26 17:24:32 · 267 阅读 · 0 评论 -
注释转换
c注释-->c++注释,将.c风格的注释转换成.cpp风格 采用有限状态机的方式实现 设置四种状态,c状态,c++状态,空状态,结束状态,主要关注四种状态转换的条件,状态转换如下: //test.cpp#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<assert.h>#inc...原创 2019-03-19 10:28:32 · 173 阅读 · 8 评论 -
排序算法复杂度及代码
//排序算法,从小到大#include <iostream>using namespace std;void swap(int &a, int &b){ int temp; temp = a; a = b; b = temp;}//选择排序void selectSort(int array[],int len){ cout <&l...原创 2019-03-20 09:25:54 · 169 阅读 · 0 评论 -
拷贝字符串时应注意哪些问题
一般采用strcpy(a,b)或者memcpy(des,src,length)来进行拷贝,strcpy比较简单,就是拷贝字符串,遇到'\0'时结束拷贝。memcpy用来做内存拷贝,可以拷贝任何数据类型的对象(字符数组、整型、结构体、类等)并指定拷贝数据的长度,根据其第3个参数决定复制的长度。strcpy(a,b) 目标字符长度要大于等于源字符长度,否则会出现...原创 2019-03-21 13:11:27 · 624 阅读 · 0 评论 -
正则表达式匹配
正则表达式匹配时,一般考虑用到有限状态机,如《剑指offer》面试题19。将一些常用正则表达式整理如下: \ 将下一个字符标记符、或一个向后引用、或一个八进制转义符。 ^ 匹配字符串的开始位置。 $ 表示匹配字符串的结束位置。 * 匹配前...原创 2019-03-21 13:39:19 · 252 阅读 · 0 评论 -
深拷贝与浅拷贝
浅拷贝 只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,换句话说,浅复制仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。深拷贝 在计算机中开辟了一块新的内存地址用于存放复制的对象。若类内成员变量需要动态开辟堆内存,如果把对象里的值完全复制给另一个对象,则指向同一块内存。如果此时一个把内存释放了(如:析构),这时另...原创 2019-03-21 14:08:37 · 109 阅读 · 0 评论 -
如何理解C++里面的多态?
实现的效果 同样的调用语句有多种不同的表现形态。 实现条件 1.继承2.虚函数重写3.父类指针指向子类对象 理论基础----静态多态pk动态多态 (1)静态多态(重载,模板)是在编译的时候,就确定调用函数的类型。(2)动态多态(覆盖,虚函数)在运行的时候,才确定调用的是哪个函数,动态绑定。运行基类指针指向派生类的对象,并调用派生类的函数。虚函数实...原创 2019-03-21 14:17:33 · 694 阅读 · 0 评论 -
野指针是什么?悬空指针和野指针区别?
野指针是什么?野指针:指向内存被释放的内存或者没有访问权限的内存的指针。 “野指针”的成因主要有3种:指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。 指针p被free或者delete之后,没有置为NULL; 指针操作超越了变量的作用范围。为了避免出现野...原创 2019-03-21 14:25:07 · 3610 阅读 · 1 评论 -
STL中sort排序
不仅仅只用了快速排序,还结合了插入排序和堆排序。如果快速排序的中间值选的不好,很有可能时间复杂度恶化为O(n2),所以就有了我们的三值取中法作为枢轴来改善。《STL源码剖析》关于sort算法实现的细节,并非所有容器都使用sort算法。关系型容器拥有自动排序功能,因为底层采用RB-Tree,所以不需要用到sort算法。序列式容器中的stack、queue和priority-queue都有特定...原创 2019-03-25 10:03:04 · 728 阅读 · 0 评论 -
select/poll/epoll
I/O 复用I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。epoll的效率更高,优化了...原创 2019-03-25 10:21:58 · 127 阅读 · 0 评论 -
进程通信方式
1. 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 2. 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 4. 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大...原创 2019-03-25 10:47:28 · 194 阅读 · 0 评论 -
hash,解决hash冲突的方法?
如何构造哈希函数数字分析法; 平方取中法; 除留余数法; 伪随机数法;处理冲突线性探测; 二次探测; 伪随机数探测; 拉链探测。 如果负载因子是默认的0.75,HashMap(16)的时候,占16个内存空间,实际上只用到了12个,超过12个就扩容。 如果负载因子是1的话,HashMap(16)的时候,占16个内存空间,实际上会填满16个以后才会扩容。增大负载因子...原创 2019-03-25 10:49:57 · 388 阅读 · 0 评论 -
引用和指针的区别?
指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。 引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要初始化,并且指向的空间可变。(注:不能有引用的值不能为NULL) 有多级指针,但是没有多级引用,只能有一级引用。 指针和引用的自增运算结果不一样。(指针是指向下一个空间,引用时引用的变量值加1) sizeof 引用得到的是所指向的变...原创 2019-03-25 10:50:58 · 158 阅读 · 0 评论 -
class、union、struct的区别
C语言中,struct只是一个聚合数据类型,没有权限设置,无法添加成员函数,无法实现面向对象编程,且如果没有typedef结构名,声明结构变量必须添加关键字struct。 C++中,struct功能大大扩展,可以有权限设置(默认权限为public),可以像class一样有成员函数,继承(默认public继承),可以实现面对对象编程,允许在声明结构变量时省略关键字struct。 C与C++中的u...原创 2019-03-25 10:55:04 · 1706 阅读 · 0 评论 -
sizeof 和strlen 的区别
strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。 sizeof计算声明后所占的内存数(字节大小),不是实际长度。 sizeof是一个取字节运算符,而strlen是个函数。 sizeof的返回值=字符个数*字符所占的字节数,字符实际长度小于定义的长度,此时字符个数就等于定义的长度。若未给出定义的大小,分类讨论,对于字符串数组,字符大 小等于实际的字符个数...原创 2019-03-25 10:56:10 · 193 阅读 · 0 评论 -
形象理解进程和线程的区别
转眼暑假一过,2015年的校招即将开启大幕,身为计算机专业的朋友们,在面试中是不是经常会被问到一个问题:进程和线程的区别,今日偶然看到阮一峰的博客,他用一个很好的类比把他们解释的清晰易懂,会不会突然让大家有种豁然开朗的感觉呢?进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握,但下面的类比解释,...转载 2019-03-26 09:44:42 · 367 阅读 · 0 评论 -
++i, i++用哪个?
前置返回一个引用,后置返回一个对象前置不会产生临时对象,后置必须产生临时对象,临时对象会导致效率降低 int& operator++(){ *this += 1; return *this;}-----------------------------------------------------...原创 2019-03-22 21:05:10 · 194 阅读 · 0 评论 -
no matching function for call to 'transform(std::__cxx11::basic_string<char>
刷题遇到的问题,transform(s.begin(), s.end(), s.begin(), tolower);将string类型全部转换成小写。报错no matching function for call to 'transform(std::__cxx11::basic_string<char>。错误原因:既有C版本的toupper/tolower函数,又有STL...原创 2019-07-21 22:13:17 · 5977 阅读 · 0 评论