std :: vector <bool>是怎么产生的?


15

如今,几乎所有的C ++开发人员都同意这std::vector<bool>是一个错误,因为它显然不是容器,而且其用例std::bitset无论如何都与大多数情况重叠。

它是如何被选为标准的?当时有争议吗?主要的支持论据是什么?


std::vector以前没有写过std::bitset吗?
dan04 '16


3
此外,赫伯·萨特(Herb Sutter)在std::vector<bool> 这里这里都写了大量文章。我认为,如果您进一步研究他的著作,您会找到所需的所有信息。
罗伯特·哈维

Answers:


10

从Herb Sutter使用引用引用:

专门将向量专用化纳入标准中,以提供有关如何编写代理容器的示例。“代理容器”是您不直接获得其对象的容器。代理容器不给您指向包含对象的指针或引用,而是提供了可用于间接访问或操纵包含对象的代理对象。在无法始终可靠地访问集合中的对象(就像它们在内存中一样)的情况下,代理集合可能很有用,例如,基于磁盘的集合会自动将其自身的某些部分在内存中进行分页显示和隐藏。需要。因此,这个想法是要展示如何使这样的代理集合满足“容器”的要求

是的,当时有讨论。

  1. 有关所有详细信息,请浏览DejaNews并对其进行强大搜索,以查找Subject =“ vector and bool”和Forum =“ c ++ ”。讨论在1997年1月2日进行。您还会发现有人问如何关闭向量专业化,这是最近的讨论。请参阅本文结尾以获取我的建议。

剩下的就是历史了。而且我讨厌看到如此好的链接无法回答的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.