序列容器是否不是常规容器的子集

Are sequence containers not a subset of general containers?

本文关键字:常规容 子集 是否      更新时间:2023-10-16
stack没有

iterator -member 类型,因此不符合一般容器要求:[container.requirements.general]

但在[container.adaptors.general]

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

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

序列容器是常规容器的子集。

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

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

由于序列容器是常规容器的子集,因此这会对不满足的容器适配器施加要求。[...] 正如NB评论所注意到的,适配器实际上不是序列也不是容器,因此需要修复此措辞。实现这一点的最简单方法是删除冒犯性的句子。