序列容器不是一般容器的子集吗?

时间:2012-10-05 09:30:28

标签: c++ stl

stack没有iterator - 成员类型,因此不符合一般容器要求:[container.requirements.general]

但在[container.adaptors.general]

  

标题<queue><stack>定义容器适配器queuepriority_queuestack。这些   容器适配器满足序列容器的要求。

序列容器不是通用容器的子集吗?

2 个答案:

答案 0 :(得分:1)

序列容器是一般容器的子集。

但是,序列适配器不符合序列容器特定的要求(没有insert成员函数),并且您已经注意到也不满足一般容器要求。我不认为[container.adaptors.general]应该说他们这样做,但它确实说我在C ++ 11草案中有这样做。

答案 1 :(得分:1)

这确实是一个缺陷(http://cplusplus.github.com/LWG/lwg-active.html#2194):

  

由于序列容器是一般容器的子集,因此对不满足的容器适配器施加了要求。 [...]   正如NB评论所注意到的那样,适配器确实不是序列也不是容器,所以这个措辞需要修复。实现这一目标的最简单方法是打击违规判决。