1,
#include <iostream>
#include <vector>
#include <bitset>
using namespace std;
int main()
{
vector<bool> bv(63,false);
bitset<63> bs;
cout<<bs.size()<<" "<<sizeof(bs)<<endl;
cout<<bv.size()<<" "<<bv.capacity()<<endl;
return 0 ;
}
输出结果:
./a.out
63 8
63 64
2,
int main()
{
vector<bool> bv(65,false); // 63 --> 65
bitset<65> bs; // 63 --> 65
cout<<bs.size()<<" "<<sizeof(bs)<<endl;
cout<<bv.size()<<" "<<bv.capacity()<<endl;
return 0 ;
}
./a.out
65 16
65 128
相同的vector<bool> 和bitset 在内存占用上应该是差不多的,但是bitset 声明的时候必须用固定大小,这是一大缺陷;
本文通过两个示例对比了bitset和vector<bool>在不同大小下的内存占用情况。实验结果显示,尽管两者在某些情况下内存占用相近,但bitset在声明时需要固定大小,这限制了其灵活性。

296

被折叠的 条评论
为什么被折叠?



