stack
没有iterator
-member-type,因此不满足一般容器要求:[container.requirements.general]
.
但在[container.adaptors.general]
标头
<queue>
并<stack>
定义容器适配器queue
、priority_queue
和stack
。这些容器适配器满足序列容器的要求。
序列容器不是通用容器的子集吗?
序列容器是通用容器的子集。
但是,序列适配器不满足特定于序列容器的要求(没有insert
成员函数),并且正如您所注意到的,它也不满足一般容器要求。我认为不[container.adaptors.general]
应该说他们这样做,但它确实在我拥有的 C++11 草案中说。
这确实是一个缺陷(http://cplusplus.github.com/LWG/lwg-active.html#2194):
由于序列容器是通用容器的子集,这对不满足的容器适配器提出了要求。[...] 正如 NB 评论所指出的,适配器真的不是序列也不是容器,所以这个措辞需要修正。实现这一点的最简单方法是删除有罪的句子。