如何在C ++中创建一个连续的bool向量?

时间:2016-04-12 19:29:48

标签: c++ vector std

如何在C ++中创建ActiveRecord::Base.connection_pool.disconnect!量的连续向量?我阅读了很多关于使用bool的警告,我想将掩码存储到std::vector<bool>

为了使我的目的更加明确,我想在std::vector<double>上对std::vector<double>向量中那些为真的元素应用统计数据。为了达到最佳性能,我希望矢量是连续的。

2 个答案:

答案 0 :(得分:4)

您需要了解人们发现std::vector<bool>存在问题的具体问题,因为它们并不一定适用于您的情况。可能最重要的是它不一定是连续的。在这里连续可能是用词不当。为整个向量分配的内存仍然可能是连续的块,但&vec[0] + i&vec[i]不一样。

然而,许多其他std::vector品质仍然存在 - 例如,它仍然提供恒定时间随机访问。

底线 - 不要只是害怕,而是要了解其含义。

答案 1 :(得分:1)

使用std::bitset 该类模拟bool元素数组,但针对空间分配进行了优化 引自:http://www.cplusplus.com/reference/bitset/bitset/