没看懂Effective STL关于vector的说明解决办法

没看懂Effective STL关于vector<bool>的说明
书上说: 因为vector<bool>是一个伪容器,并不保存真正的bool,而是打包bool以节省空间。 vector<bool>是一个伪容器,并不保存真正的bool,而是打包bool以节省空间。在一个典型的实现中,每个保存在“vector”中的“bool”占用一个单独的比特,而一个8比特的字节将容纳8个“bool”。在内部,vector<bool>使用了与位域(bitfield)等价的思想来表示它假装容纳的bool。

我写了几行代码来测试一下,发现有问题。既然vector<bool>就是存储的位域,那么至少我可以获得一个字节的内容吧。但是下面的代码在VC10下面崩溃了。为什么呢?

C/C++ code

#include<iostream>
#include<vector>
using namespace std;
int main(void){
    vector<bool> vb;
    vb[0]=1;
    vb[1]=2;
    cout<<*(bool*)(&vb)<<endl;
    return 0;
}



------解决方案--------------------
改成这样:
C/C++ code

#include<iostream>
#include<vector>
using namespace std;
int main(void){
    vector<bool> vb(1024);// SIZE
    vb[0]=1;
    vb[1]=2;// bool(2)==1.
    cout<<*(bool*)(&vb[0])<<endl;
    return 0;
}

------解决方案--------------------
探讨

引用:

楼上那代码结果是1吧,你的是128?
vb(1024) 这样是预先申请了空间,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据 引用:
引用:

改成这样:
C/C++ code

#include<iostream>
#include<vector>
using namespace std;
……