对象封装

C++与C语言最大的区别在于C++提供了对抽象数据的封装支持,在C语言中,常见的做法是定义struct,然后使用在struct外部定义的方法操作struct中的数据,这种做法剥离了数据与方法之间的联系,不利于保持程序结构的清晰与一致性。C++将结构体的概念扩展为“对象”,使之支持成员函数与继承。初看起来C++对象的概念比C结构体臃肿,实际上现代编译器采取了一系列优化方式降低封装对内存的额外消耗。

C++

双端队列简介

顾名思义,deque支持在头尾进行插入删除操作。类似于vector和array,deque也是顺序存储结构,没有了解过deque的人在主观上可能会以为deque与vector底层结构类似,实际上为了支持头部插入与删除操作,deque采用分段连续存储的数据结构,因此实现上比vector复杂得多。因为采用分段设计,deque的迭代器效率比vector低。
为了管理片段,STL的deque在内部定义了一个_Map成员,_Map底层实际是一个T**,也可以将_Map看作一个数组,每一个数组元素指向内存中的一段连续的元素存储空间

迭代器概念

STL设计迭代器的初衷就是将容器细节与算法分离,转而用迭代器作为两者的桥梁。迭代器作为一种访问容器的结构,其本质上也是一种对指针的高级包装而已,因此对应于容器的结构特点,迭代器也分为单向迭代器(典型如单链表)、双向迭代器(如双链表)和随机访问迭代器(如vector等顺序存储容器)。




载入天数...载入时分秒...  |  总访问量为
Powered by Github and MarkdownPad 2

--------------------------- 别拉了,我是有底线的>_< ---------------------------