小工具知识网

当前位置: 首页 > 行业知识 > C++从零开始的打怪升级之路(day38)

行业知识

C++从零开始的打怪升级之路(day38)

2026-10-31 04:38:31 来源:互联网转载

这���关于一个普通双非本科大一学生的C++的学习记录贴

()

在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料

那么开启正题

()

今天分享的是关于适配器了解以及一些简单适配器实现

1.容器适配器

1.1什么是适配器

适配器是一中设计模式(设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另一个接口

也就是我们常说的复用

1.2deque

虽然stack和queue中也可以存放元素,但在STL中并没有将其划分在容器的行列,而是将其称为容器适配器,这是因为stack和queue只是对其他容器的接口进行了包装,STL中stack和queue默认使用deque

deque又叫双端队列,大致性质就是一个指针数组,每个指针对应一段空间,如果数据存满了需要再存数据,只需再开一个指针,如果需要扩容也只是指针数组需要扩容,但是deque的迭代器相当复杂,有四个指针,这里不展开分析

明明我们有vector和list,为什么需要deque这个容器呢

deque的优点:支持随机访问,头插头删效率高,这很好得弥补了list和vector的不足,那deque可以取而代之吗,答案显而易见,我们来看deque的缺点

deque的缺点:【】效率低,由于迭代器复杂,和本身复杂的结构,使deque的大量随机访问效率低,大概是vector时间的4~5倍,但是在stack,queue中并没有体现到他的缺陷,因此STL中的默认容器选择了它

2.stack的模拟实现

根据stack先进后出的性质我们可以借助vector或者deque模拟实现

namespace wkl{templateclass stack{public:stack(){;}void push(const T& x){_con.push_back(x);}void pop(){_con.pop_back();}T& top(){return _con.back();}size_t size(){return _con.size();}bool empty(){return _con.empty();}private:Container _con;};void Test_stack(){stack st;st.push(1);st.push(2);st.push(3);st.push(4);while (!st.empty()){cout 

上一篇:服务器怎么修改重生点?

下一篇:云服务器怎么重启电脑?