stack
没有iterator
- 成员类型,因此不符合一般容器要求:[container.requirements.general]
。
但在[container.adaptors.general]
标题
<queue>
和<stack>
定义容器适配器queue
,priority_queue
和stack
。这些 容器适配器满足序列容器的要求。
序列容器不是通用容器的子集吗?
答案 0 :(得分:1)
序列容器是一般容器的子集。
但是,序列适配器不符合序列容器特定的要求(没有insert
成员函数),并且您已经注意到也不满足一般容器要求。我不认为[container.adaptors.general]
应该说他们这样做,但它确实说我在C ++ 11草案中有这样做。
答案 1 :(得分:1)
这确实是一个缺陷(http://cplusplus.github.com/LWG/lwg-active.html#2194):
由于序列容器是一般容器的子集,因此对不满足的容器适配器施加了要求。 [...] 正如NB评论所注意到的那样,适配器确实不是序列也不是容器,所以这个措辞需要修复。实现这一目标的最简单方法是打击违规判决。