【发布时间】:2018-03-27 09:57:35
【问题描述】:
是否有一种标准方式(或至少是半标准的,在所有流行的编译器中实现)来获得非专用、非优化、连续的std::vector<bool> 容器?
我有一些处理std::vectors 的通用代码,假设它们都是这样标准的、连续的容器。我目前的解决方法是使用 std::vector<int>,它只存储 0 和 1,这是我想要的内容,但拥有正确的矢量类型会更好。
【问题讨论】:
-
至少,你可以通过使用
std::vector<char>来节省一些空间,因为char 的大小与bool 相同... -
@Aconcagua - 不能保证
bool的大小与char相同。 -
@StoryTeller 不符合标准,但在过去的 15 年里我从未见过其他任何东西......我们可以接受它作为 de facto 标准吗?跨度>
-
@Aconcagua - 不,我们不能。事实上,在访问单个字节的成本很高的系统上,将
bool设置为原生字长实际上是有意义的。 -
@StoryTeller 但至少绝对不会浪费空间,因为 char 是可能的最小类型。