C++
文章平均质量分 65
Dxiaoru
这个作者很懒,什么都没留下…
展开
-
模板1
模板,即是一种泛型编程,包扩类模板和函数模板。实际上就是为了类或函数的通用性,将类型参数化。函数模板:templatevoid fun(T data){}这就是函数模板的实现方式。原创 2017-10-17 11:53:03 · 332 阅读 · 0 评论 -
STL六大组件 之 空间配置器
空间配置器存在的原因:①频繁的申请和释放空间,就会频繁地调用malloc和free函数,函数调用时栈帧的开辟和回退,这些都是有开销的,就会降低运行的效率。②频繁的申请和和释放空间,会造成内存碎片的问题。使得即使有足够的空间,也申请不到一个连续的空间。 SGI 标准的空间配置器:std::allocator, 它符合部分标准,但效率不佳,它只是把以下两个函数::operator ne...原创 2018-08-04 20:53:31 · 275 阅读 · 0 评论 -
STL的六大组件 之 迭代器和traits技术
迭代器是容器和算法相联系的重要部件(粘合剂),设计迭代器需要了解相应容器的实现细节,为了隐藏这些细节,STL每个容器都自己提供了专属迭代器。这些迭代器需要实现对容器的各种操作:如++,--,==,!=等。我们在使用泛型算法如:find时,在find内,需要使用迭代器的相应型别(一共有五种:①所指之物的类型,②迭代器类型,③指针类型,④引用类型,⑤差值类型)。声明内嵌型别可以获取迭代器相应型...原创 2018-08-04 21:04:06 · 276 阅读 · 0 评论 -
STL六大组件 之 容器 和 容器适配器
一、STL容器:顺序容器:(1)vector 向量容器,底层是由数组实现的。 初始化默认内存容量是0,有第一个元素时开辟一个元素大小,接下来的扩容以2倍的大小自动增长。(VS下是1.5倍) vector也可以在定义时直接指定空间大小和初始值:vector<type> iv(2,9); vetor扩充空间包括三个步骤:重新配置内存,移...原创 2018-08-04 21:18:01 · 1911 阅读 · 1 评论 -
函数调用堆栈
函数调用堆栈:栈保存了一个函数调用所需要的信息。函数调用的堆栈如下图所示: 在主函数(这里是泛指函数调动方)调用被调函时,①先将需要传递的参数压入栈中(第一个参数地址为ebp-8,接下来是ebp-12,等等),②将call后的下一句指令地址入栈(也就是函数的返回地址)。接下来就是被调函数的栈帧:③将主函数的栈底地址入栈(为栈回退时esp指针能回到原本的位置)④将ebp指...原创 2018-08-04 21:28:04 · 387 阅读 · 0 评论 -
C++的多态
面试中每次问到这个东西,我都说的很不好,感觉还是把它重新整理一下吧。 多态:是c++oop思想的三大特性之一。可提高代码的复用,和对功能的扩展。实现了,当一个函数被不同的对象调用时,能产生不同的效果或行为。c++的多态分为静多态和动多态,静多态是编译时的多态,即在编译时确定调用的是哪个函数,如模板、重载;动多态是运行时的多态,只有在运行的时候才能知道调用的是哪个函数,它是基于继承和...原创 2018-09-21 21:19:37 · 207 阅读 · 0 评论