在文档中,我看到
如果不是这样,那么这意味着什么,如果我想进行此优化,会有什么影响?
我正在使用TDM GCC工具集。
std::vector<bool>
通过使每个布尔值占用一个位来优化空间效率。从文档中可以看出:
这是否意味着它取决于编译器的实现?如果是这样,我在哪里可以检查我的编译器是否支持它?为什么他们不希望支持它?这似乎是一种非常简单和有效的实现。std::vector如何实现空间效率(以及是否进行了优化)是实现定义的。
如果不是这样,那么这意味着什么,如果我想进行此优化,会有什么影响?
我正在使用TDM GCC工具集。
std::vector<bool>
的实现在很大程度上取决于编译器。它可能根本没有被优化,或者它可能以一种特定于实现的方式进行了优化。通常,您可以通过查阅编译器文档来了解这一点。对于GCC和其他开源工具链,我想您也可以查阅源代码。但这不仅需要更多的工作,而且可能不是一个很好的主意,因为源代码只记录了实现,而不是契约。 - Cody Graystd::vector<bool>::reference_type
是否为bool &
还是其他类型。如果是后一种情况,则您有一个代理类型,这应该仅允许用于“优化”的实现。 - Matteo Italiastd::vector<bool>::reference
定义为代理。 - T.C.