c++ - std::vector<bool> 优化实现

标签 c++ optimization vector boolean tdm-gcc

documentation ,我可以看到 std::vector<bool>通过使每个 boolean 值占用一个位来优化空间效率。来自文档:

The manner in which std::vector is made space efficient (as well as whether it is optimized at all) is implementation defined.

这是否意味着它取决于编译器的实现? 如果支持,我在哪里可以检查我的编译器是否支持它?他们为什么不希望它得到支持?这似乎是一个非常简单有效的实现。

如果不是,这意味着什么?如果我希望进行此优化,它意味着什么?

我正在使用 TDM GCC 工具集。

最佳答案

实现定义意味着它取决于什么构成了抽象机的参数。 (即定义主机操作系统的算法、它们的实现规范和系统调用)。关于“定义的实现”含义的信息性问答是 here

更有可能的是,如果您有一台带有现代编译器/IDE 的现代机器,它就支持实现定义。

如果编译器不支持它,那不太可能是因为他们不“想要”它,而是因为它要么是一个非常古老的编译器,要么是一台资源非常有限的机器。

它归结为它依赖于机器;因此不同的操作系统将以自己的方式处理它。 (即 32 位与 64 位等)它不会影响可移植性,除非使用(非常)旧的编译器。如果有问题,您可以检查编译器版本的规范,通过搜索您的编译器及其版本可以轻松在网上找到。

关于c++ - std::vector<bool> 优化实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299399/

相关文章:

java - JPA - 如何在不构造父对象的情况下构造 ManyToOne 关系的子对象

c - 结构成员访问的性能

c++ - 从 std::string 构造 CString - 复制字符或指针

javascript - IIS/.NET的一些类似JAWR的软件(consolidate and minify Javascript)

C++——从二进制文件中读取动态分配的 vector

c++ - 创建类对象的 vector 时何时调用构造函数?

c++ - 如何在重复循环中遍历 std::vector

C++ 算法结构和类

c++ - 为什么迭代器类型推导会失败?

C++ 使用文件格式