自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MISAYAONE的博客

坚持、果敢、勤思、沉淀

  • 博客(56)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 C++ 希尔排序算法的实现与改进(含笔试面试题)

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待

2017-03-31 09:25:16 3737 2

原创 C++ 堆排序算法的实现与改进(含笔试面试题)

堆排序(Heap sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以用到上一次的排序结果,所以不像其他一般的排序方法一样,每次都要进行n-1次的比较,复杂度为O(nlogn)。这里先说明以下几个基本概念:完全二叉树:假设一个二叉树有n层,那么如果第1到n-1层的每个节点都

2017-03-31 09:21:29 13238 1

原创 C++ 计数排序算法的实现与改进(含笔试面试题)

计数排序局限性比较大,算法思想:假定输入是有一个小范围内的整数构成的(比如年龄等),利用额外的数组去记录元素应该排列的位置,思想比较简单。计数排序是典型的不是基于比较的排序算法,基于比较的排序算法最少也要O(nlogn),有没有可能创造线性时间的排序算法呢?那就是不基于比较的排序算法;如果数组的数据范围为0~100,则很适合此算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数

2017-03-30 09:23:36 2451

原创 C++ 桶排序算法的实现与改进(含笔试面试题)

桶排序的算法思想:是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不受到 O(n log n) 下限的影响。简单来说,就是把数据分组,放在一个个的桶中,然后对每个桶里面的在进行排序。(桶本身是有

2017-03-30 09:20:46 5338 3

原创 C++ 归并排序算法的实现与改进(含笔试面试题)

归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。算法步骤:1:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2:设定两个指针,最初位置分别为两个已经排序序列的起

2017-03-30 09:18:25 6933 5

原创 C++ 选择排序算法的实现与改进(含笔试面试题)

选择排序(Selection sort)也是一种最简单直观的排序算法。算法步骤1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。3)重复第二步,直到所有元素均排序完毕。、实现代码:/************************************

2017-03-28 09:32:57 2354 6

原创 C++ 插入排序算法的实现与改进(含笔试面试题)

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。简单小tips:假设一个数列:1、2、5、3。插入排序的思想就是从1开始每次向前遍历:2比1大,为有序5比2大,5比1大,为有序3比5小,无序,交换,交换之后3与2比,3与1比有序结果为 :1、2、3、5算法步骤:1)将第一待排序序

2017-03-28 09:18:24 1706

原创 C++ 冒泡排序算法的实现与改进(含笔试面试题)

冒泡排序(Bubble sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法步骤:1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。2)对每一对相邻元

2017-03-25 09:41:44 5413 4

原创 C++ 比较排序算法总结分析

比较排序算法的总结(此表格来源于网络):比较排序算法(Comparison Sorts)CategoryNameBestAverageWorstMemoryStability 插入排序 (Insertion Sorts)  插入

2017-03-25 09:37:30 1864

原创 C++ 堆栈内存相关知识

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

2017-03-25 09:35:09 855

原创 C++ const与指针之间组合的辨析

const与指针之间相互组合的辨析1:如果一个对象被声明为const,变成了常量那么也只能使用指向常量的指针来存放常量的地址。但是,指向常量的指针并没有规定其所指对象必须为常量。所以,指向常量的指针仅仅要求不能通过该指针改变对象的值,使用其他方式改变对象的值是被允许的!#include #include#includeusing namespace std;int main(in

2017-03-25 09:30:33 843

原创 加入光荣的进化吧!!!

在年轻时,维克托就发现了他对科学与发明的激情,特别是机械自动化这一领域。他参加了祖安享有盛名的科技魔法大学,并带领了一支队伍,研发出了布里兹这一科学史上的突破,并期待着这项发明能够让他登上职业生涯的巅峰。不幸的是,他的傲人成果被斯坦里克教授给篡夺了。斯坦里克还窃取了研发布里兹知觉系统的声誉,并且后来还用维克托的研究成果来复活厄加特。于是维克托上诉,要求公正,却被置之不理,他也因此陷入深深的消沉之中

2017-03-24 09:46:35 8508 6

原创 C++Primer第五版 第十九章习题答案(21~26)

21、22、23:知识点1:union是一种特殊的类,可以包含多个数据成员,但是在任意时刻只能有一个数据成员可以有值,其他成员属于未定义的状态,分配给union的内存只要能存储它的最大数据成员即可知识点2:union中不能含有引用类型的成员,但不可继承、不含有虚函数知识点3:union的名字就相当于一个类型名,可以使用一对花括号显式初始化:union Token {};//后面的分号勿

2017-03-24 09:43:14 2871 9

原创 C++ 类继承中static成员的辨析

首先明确static的相关知识点:知识点1:静态变量并不是说其就不能改变值,不能改变值的量叫常量(即const), 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。知识点2:静态变量 类型说明符是static。知识点3:静态变量属于静态存储方式,其存

2017-03-23 09:32:17 1630 2

原创 C++Primer第五版 第十九章习题答案(11~20)

11:知识点1:枚举类型使得我们可以将一组整型常量组织在一起,但是每一个枚举类型都定义了一种新的类型知识点2:C++11新标准引入了限定作用域的枚举类型,带有class或struct关键字的,就是限定作用域的枚举类型,形式为enum (class/struct) XX { 枚举成员 };,注意后面需要加分号结尾,若enum没有名字,那么我们只能在定义时初始化该对象知识点3:在限定作用域的枚

2017-03-23 09:30:13 3134 4

原创 C++Primer第五版 第十九章习题答案(1~10)

C++特殊的工具和技术1:知识点1:new和delete运算符的实现细节:new的操作过程:第一步、new表达式调用operator new(或者 operator new[])的标准库函数,该函数分配一块足够大的、原始的、未命名的内存空间以便存储特定类型的对象(或数组)。第二步、编译器运行相应的构造函数以构造这些对象,并为其传入初始值。第三步、对象分配了空间并构造完成,返回一个指向该对象

2017-03-23 09:26:14 4094 11

原创 C++ 编程中遇到的一些实际问题

11:error:"Quote",未知重写说明符原因:初始化列表的:(冒号)是中文形式的,没发现12:fatal error C1083: 无法打开包括文件:“Disc_quote”: No such file or directory原因:“Disc_quote.h”,自定义的版本需要加.h13:error:protected成员 "price"不是类"Flowe

2017-03-21 09:26:32 1321

原创 C++Primer第五版 第十八章习题答案(21~30)

21:知识点1:多重继承是指从多个基类中产生派生类的情况,多重继承的派生类继承了所有父类的属性知识点2:继承的访问说明符被忽略的话,class默认为private,struct默认为public知识点3:构造一个派生类对象时将会同时构造并初始化它所有的基类子对象,如若不是显示初始化,则其会使用基类的默认构造函数进行初始化,基类的构造顺序与派生类列标准基类出现的顺序一致知识点4:C++1

2017-03-21 09:23:45 3312 13

原创 C++Primer第五版 第十八章习题答案(11~20)

11:what函数是用来返回初始化异常对象信息的,若what中也要抛出异常,是不是就造成无限递归了12:知识点1:传统意义上,可以将全局定义的实体名字定义的很长以避免命名空间污染,这样的名字通常将其名字所属的库作为前缀,但比较费时费力知识点2:命名空间可以更好的防止名字冲突,且避免全局名字的固有限制知识点3:namespace后加命名空间的名字,加上一对花括号就是一个完整的命名

2017-03-20 09:31:19 3311 2

原创 C++Primer第五版 第十八章习题答案(1~10)

大规模应用程序的特殊要求知识点1:异常处理:在独立开发的子系统之间协同处理错误的能力知识点2:命名空间:使用各种库(可能包含独立开发的库)进行协同开发的能力知识点3:多重继承:对比较复杂的应用概念建模的能力1:知识点:C++通过抛出一个表达式来引发一个异常,throw之后的代码将不会被执行,程序控制权将从throw转移到与之匹配的catch模块(即捕获)(若try语

2017-03-20 09:26:56 4246 3

原创 C++ 暂停黑窗口方法的辨析

相信很多初学者都经历过这样一个问题:程序运行后黑窗口一闪而过。现在普遍的解决方法有两种:1:system("pause")2:cin.get()/getchar()但是这两种方法却有着很大的不同,网上找到的英文对应讲解(英文好的直接阅读原版吧,更加好一点):Many people, instructors included, for some inexplicable

2017-03-19 09:37:39 2649

原创 C++Primer第五版 第十七章习题答案

这一章暂时没多大用处,以后遇到需要使用的情况再看,不过还是要大概了解下讲的是什么,不然看代码看到了都不知道是什么1:tuple类型,tuple意为元组,类似于pair,但参数可以有很多个,可以用于函数返回多个值的情况(话说使用结构体也可以),需要tuple头文件2:bitset类型,bit+set,类似于array,可以存储二进制位,大小不可变3:正则表达式:描

2017-03-19 09:37:25 3553 1

原创 C++ 递增运算符:前置++和后置++的区别

首先说下结论:迭代器和其他模板对象应该使用前缀形式 (++i) 的自增,,自减运算符,因为前置自增 (++i) 通常要比后置自增 (i++) 效率更高前置++和后置++,有4点不同:返回类型不同、形参不同、代码不同、效率不同int main() { Age a; (a++)++; //编译错误 ++(a

2017-03-18 09:33:01 10532

原创 C++Primer第五版 第十六章习题答案(61~67)

61:自己定义shared_ptr是不是在哪做过,忘了。62:知识点1:当我们不能(或者不希望)使用模版版本时,我们可以定义类模版或者函数模版的一个特例化版本:比如说函数模版中的处理不适用于未定义知识点2:一个特例化版本就是模版的一个独立的定义,在其中一个或者多个参数被特定为指定的类型知识点3:在为函数模版特例化时,必须为函数模版的每个模版参数提供实参,尖括号中的模版参数去掉,

2017-03-18 09:29:48 3283 5

原创 C++Primer第五版 第十六章习题答案(51~60)

51:知识点1:可变函数模版就是指一个接受可变数目参数的模版函数或者模版类,可变数目的参数被称为参数包,分为两种:模版参数包,表示零个或多个模版参数,函数参数包,表示零个或多个函数参数知识点2:C++11新标准才可用,利用一个省略号来表示一个模版参数或者函数参数为一个包template void Foo(const T&, const U&...dest){ //U表示一个模版参数包,

2017-03-18 09:29:14 4189 4

原创 C++ 使用void main()还是int main()?

首先明确三点:1:Linux下的进程运行完毕都会有一个返回值,范围[0~255],int main() 就是为了对应这个返回值。2:使用int main()主要是可以给操作系统返回一个值,让操作系统明白这个程序执行的状态,比如执行这个程序后下一步可能要根据这个返回值做分支处理,如果是void的话就是一个哑巴程序,返回值不确定,异常退出和正常推出无法区别,的确移植性很差。int mian是C

2017-03-17 09:19:47 18984

原创 C++Primer第五版 第十六章习题答案(41~50)

41:头文件#ifndef REU_TYPE_H#define REU_TYPE_Htemplate auto sum(const T&a,const T&b) ->decltype(a+b)//将函数的返回类型指定为a+b的类型{ return a+b;}#endif REU_TYPE_Hmain.cpp#include #include #include

2017-03-17 09:16:00 3667 10

原创 C++Primer第五版 第十六章习题答案(31~40)

31:unique_p是保存删除器函数的指针,所以需要一次跳转操作,并不会内联而是跳转32:知识点1:从函数实参到模版实参的过程被称为模版实参推断,在这个过程中,可能会发生类型转换知识点2:只有很有限的几种方式会发生类型转换1:非const对象的引用或者指针到const对象的引用或者指针(const到非const是不合法的)(顶层const会被忽略)2:若函数参数不是引用的

2017-03-17 09:14:12 4292 22

原创 C++Primer第五版 第十六章习题答案(21~30)

21:知识点1:一个类无论是类模版还是普通类,都可以将其成员函数定义为模版,称之为成员模版,但是成员模版不能是虚函数debug.h#ifndef DEBUG_H#define DEBUG_Hclass Debugdelete{public: Debugdelete(ostream &s = cerr):os(s){}//构造函数 template void operator

2017-03-16 09:44:50 4588 17

原创 C++Primer第五版 第十六章习题答案(11~20)

类模版也是相当的重要,遇到过很多次,好好理解吧11:知识点1:类模版的定义:与函数模版不同的是,编译器不会为类模版推断模版参数类型,所以我们在使用类模版时,需要显式地指出元素的类型,在其定义中,模版参数可以当作类型使用,用来表示类保存的元素的类型:比如说类中保存了一个T类型的vector变量知识点2:我们可以将类中元素访问操作的返回类型定义为T&,也就是模版参数的引用,在被实例化之后,T会

2017-03-16 09:41:02 5572 7

原创 C++Primer第五版 第十六章习题答案(1~10)

1:知识点1:面对对象编程OOP和泛型编程都能处理在编写程序时不知道类型的情况,而OOP能处理类型在程序运行之前都未知的情况,在泛型编程中,在编译时就能获知类型了知识点2:容器、迭代器、算法都是泛型编程的例子知识点3:模版是C++泛型编程的基础,一个模版就是一个类或函数的蓝图或者说是公式:例如在使用vector这样的泛型类型,或者是find函数这样的泛型类型,我们可以将蓝图转换为特定的类或

2017-03-14 09:30:56 5575 7

原创 C++Primer第五版 第十五章习题答案(41~42)

41:非智能指针,所有的new都需要进行手动delete.42:写出自己的思路吧,就不具体实现了(a):这一小问感觉有点问题,描述不清楚。个人理解:将文件读入之后,每行保存在一个vector中,根据输入单词,每行查询,输出对应单词(b):重新定义一个类,将每次的查询结果用一个map保存起来就好了,int为编号,map为查询结果(c):指定文本范围,根据输入限制一下vecto

2017-03-14 09:27:58 2992

原创 C++Primer第五版 第十五章习题答案(31~40)

后面的题目主要是进行练习,即使是照搬书本上的例子,也要做一做31:知识点1:继承体系:is  a ,和has  a 的区别。知识点2:将层次关系隐藏与接口类之中,保存一个基类(抽象基类)派生类的对象的指针32:拷贝:调用合成的拷贝构造函数,将智能指针q的内容复制到新对象的对应成员,使智能指针q计数+1移动:调用合成的移动构造函数,将智能指针q的内容移

2017-03-14 09:27:16 4791 17

原创 C++ 关于“不允许使用数据成员初始值设定”的问题

这应该算是C++11新标准的一个重大的改动了!建议使用VS2015使用新标准!C++11 之前的标准是不允许在类内初始化非静态数据成员的,只有静态常量整型数据成员,才可以在类中初始化。具体原因可以看下列原因(旧版):(1)类只是一个抽象类型,并不是实体的东西,利用这个抽象类型会实例化成不同的个体,每个个体的特征(数据成员)都不一样,如果在类定义中将特征初始化了,岂不是破坏了抽象性,

2017-03-13 09:36:50 17100

原创 C++Primer第五版 第十五章习题答案(21~30)

21:发挥自己的想象力吧!#ifndef FLOWER_H#define FLOWER_H#include using namespace std;class Flower//花店花朵{public: Flower();//默认构造函数 Flower(const string& s,double sale_pice):name(s),Price(sale_pice){}//

2017-03-13 09:35:58 6715 15

原创 C++ 编程中遇到的一些实际问题

1:error:“placeholders”: 具有该名称的命名空间不存在原因:没有写上包含该命名空间的头文件:#include 2::error:vector subscript out of rangevector vector1;//定义之后,不能直接通过下面的方式赋值,这样会导致越界vector[0] = "aa";vector[1] = "bb";

2017-03-12 09:41:42 3012

原创 C++Primer第五版 第十五章习题答案(11~20)

11:知识点1:当我们使用引用或者指针调用一个虚成员函数时才会执行动态绑定,因为我们知道在程序运行时才知道到底调用了哪个版本的虚函数,所以所有虚函数都必须有定义知识点2:引用和指针的静态类型与动态类型不同的这一事实是C++语言支持多态性的根本所在(必须是虚函数)知识点3:一个派生类的函数成员如果覆盖了基类的继承而来的虚函数,则它的形参类型必须与被它覆盖的基类函数完全一致,返回类型也必须相匹

2017-03-12 09:39:06 6741 16

原创 C++Primer第五版 第十五章习题答案(1~10)

1:知识点1:面向对象程序设计的三个基本概念:数据抽象、继承和动态绑定(核心概念)数据抽象:将类的接口与实现分离继承:我们可以定义与其他类相似但完全不相同的新类动态绑定:在使用这些彼此相似的类时,在一定程度上忽略他们的区别,统一使用它们的对象知识点2:类的继承构成一种层次关系,在层次根部的为基类,其他类则直接或者间接的从基类中继承而来,称为派生类基类负责定义在层次关系中所有类共

2017-03-11 09:33:43 7192 6

原创 C++Primer第五版 第十三章习题答案(51~58)

51:P418已经说的很清楚,使用的是移动操作,因为返回值相当于一个表达式,为右值52:rhs是一个非引用的参数,所以需要进行拷贝初始化,依赖于实参的类型,拷贝初始化要么使用拷贝构造函数要么使用移动构造函数,左值被拷贝,右值被移动hp的第一个赋值中,右侧为左值,需要进行拷贝初始化,分配一个新的string,并拷贝hp2所指向的stringhp的第二个赋值中,直接调用std::m

2017-03-11 09:32:31 4239 19

原创 C++Primer第五版 第十三章习题答案(41~50)

41:就是前置先加后用,后置先用后加,first_free指向的是一个空位置,前置的话会跳过一个空位置。42:本章所实现的StrVec类属于简化版本的容器类,只适用于string,运行时可动态分配内存的大小43:使用for_each和lambda表达式可能会更好一点,无需循环,语义更加明显 void free() { if (elements) {//

2017-03-10 09:36:04 6464 8

新版glut32.dll

新版本glut32.dll 可解决“无法定位程序输入点 _glutCreateWindowWithExit于动态链接库glut32.dll上”问题

2017-06-13

仿宋GB2312字体

GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。

2017-05-22

2017 华为软件精英挑战赛赛题

2017 华为软件精英挑战赛赛题:大视频时代•布局 在给定结构的G省电信网络中,为了视频内容快速低成本的传送到每个住户小区,需要在这个给定网络结构中选择一些网络节点附近放置视频内容存储服务器。需要解决的问题是:在满足所有的住户小区视频播放需求的基本前提下,如何选择视频内容存储服务器放置位置,使得成本最小。

2017-04-03

Faststone6.9安装包

Faststone 是一款Windows 上的一款强大的截图软件。 可以随时捕获窗口,抓取控件,抓取全屏,自定义区域截屏。 同时它还支持滚动截屏,尤其是当你截取网页的时候。 同时它还自带强大的图片编辑器,还可以屏幕取色。 它还可以录制视频,保存为视频文件或者gif 文件。

2017-01-07

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

TA关注的人

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