摘要:
一.题目实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。二.思路这道题很简单,但是要留意一些细节,比如底数为0,指数不能为负数(不能对0求倒)底数、指数均为0,最后结果是1。在数学里面0^0是未定式;但在离散里面0^0=1;在计算机中,规定了0^0=1;我们可以用如下的公式求a的n次方... 阅读全文
摘要:
0.概述0.1算法分类十种常见的排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度bune能够突破O(nlogn),因此称为非线性时间比较类排序线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。0.2相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。... 阅读全文
摘要:
引言智能指针和普通指针的区别在于智能指针实际上是对普通指针加上了一层封装机制,这样的一层封装机制的目的是为了使智能指针可以方便的管理一个对象的生命期。在C++中,我们知道,入伏哦使用普通的指针来创建一个指向某个对象的指针,那么在使用完这个对象之后我们需要自己删除它,例如:ObjectType* temp_ptr = new ObjectType();temp_ptr->foo();delete t... 阅读全文
摘要:
昨天面试问到几个问题,当时感觉不是很了解,回来之后整理下,先说一下空类的实例化问题一个C++空类实例化大小是多少?一个C++空类实例化大小事实上并不为空,他有一个隐晦的1个byte.首先:什么是类的实例化?所谓类的实例化,就是在内存中分配一块地址。例一:#includeusing namespace std;class A {};class B {};class C : public A { ... 阅读全文
摘要:
引言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。对C++ 了解的人都应该知道虚函数(Vi... 阅读全文
摘要:
引言我们都知道vector对象是动态存储的,从这一点看有点像链表,可以动态的增加或减少元素。我们也知道链表中是有指针变量,专门用于存储上一个和下一个元素的地址。正是因为这两个指针的存在,我们才能做到动态的存储数据,即不用像数组那样必须事先申请好空间。链表的缺点就是不能够快速的随机访问其中元素,必须通过指针层层查找。但是,vector既可以实现动态存储数据,而且支持快速随机访问(用下标或者指针访问元... 阅读全文
摘要:
引言 C风格的强制转化(Type Cast)容易理解,不管是什么类型的转换都可以使用下面的公式: 当然,C++也是支持C风格的强制转换,但是C风格的强制转换可能带来一些隐患,让一些问题难以察觉,所以C++提供了四种强制类型转换函数(它们都是类模板):const_cast,static_cast,dy 阅读全文
摘要:
new和malloc大体来说有以下10点区别:申请内存所在位置不同返回类型的安全性不同内存分配失败时的返回值不同是否需要制定内存的大小是否调用构造/析构函数对数组的处理是否能够相互调用是否能够重载是否能够再分配用户能否处理内存分配不足的问题1.申请内存的所在位置不同new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于... 阅读全文
摘要:
总述C++中堆和栈主要有以下几点不同:管理方式不同空间大小不同能否产生碎片不同生长方向不同分配方式不同分配效率不同详情管理方式:对于栈来讲,是由编译器自动管理,无需手动控制;对于堆来说,分配和释放都是由程序员控制的。空间大小:总体来说,栈的空间是要小于堆的。一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的;但是对于栈来讲,一般是有一定的空间大小的。碎片问题... 阅读全文
摘要:
五大内存分区在C++中,内存分成5个区,它们分别是:栈、堆、自由存储区、全局/静态存储区和常量存储区。栈:由编译器自动分配和释放,存放函数的参数值、局部变量的值等。操作方式类似于数据结构中的栈。堆:堆由程序员手动分配和释放,且完全不同于数据结构中的堆,分配方式类似链表。由new/delete 申请和释放。若程序员忘记释放则由系统于程序结束时回收。自由存储区:是由malloc等分配的内存块,和堆十分... 阅读全文