容器和容器适配器有什么区别和联系,为什么容器适配器模板要提供两个类型,这两个类型各代表什么?
1个回答
展开全部
容器vector,list,deuqe是C++STL中三种基本容器实现,它们不可能互为实现同时又不损失效率, 就像颜色中的三原色红绿蓝可以混成其他多种颜色.
而stack和queue则都可以在这三种基本容器序列基础上高效实现, 所以没有定义为独立的容器,而只作为基本容器适配器.
所以容器适配器所提供的是原来容器的一个受限的界面, 特别是适配器不提供迭代器.
所有stack和queue是用deque基本容器作为实现方式的.
容器适配器模板要提供两个类型1是容器中元素的类型, 2是选择的实现方式
请参考:
数据结构中的抽象界面(接口, 逻辑结构)和具体实现(物理结构)之间的关系.
设计模式中的适配者模式adaptor与adaptee, Bridge桥接
book:C++之父<The C++ programming language>, Gof<design pattern >
而stack和queue则都可以在这三种基本容器序列基础上高效实现, 所以没有定义为独立的容器,而只作为基本容器适配器.
所以容器适配器所提供的是原来容器的一个受限的界面, 特别是适配器不提供迭代器.
所有stack和queue是用deque基本容器作为实现方式的.
容器适配器模板要提供两个类型1是容器中元素的类型, 2是选择的实现方式
请参考:
数据结构中的抽象界面(接口, 逻辑结构)和具体实现(物理结构)之间的关系.
设计模式中的适配者模式adaptor与adaptee, Bridge桥接
book:C++之父<The C++ programming language>, Gof<design pattern >
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询