4

stack没有iterator-member-type,因此不满足一般容器要求:[container.requirements.general].

但在[container.adaptors.general]

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

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

4

2 回答 2

1

序列容器是通用容器的子集。

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

于 2012-10-05T12:56:53.620 回答
1

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

由于序列容器是通用容器的子集,这对不满足的容器适配器提出了要求。[...] 正如 NB 评论所指出的,适配器真的不是序列也不是容器,所以这个措辞需要修正。实现这一点的最简单方法是删除有罪的句子。

于 2012-10-06T19:53:01.750 回答