两个vector的大小不同是因为vector<bool>和vector<char>在内存中的存储方式不同。
vector<bool>是一个特殊的容器,它使用位压缩(bit compression)的方式来存储bool类型的数据。在内存中,每个bool值只占用一个位(bit),而不是一个字节(byte)。这样做是为了节省内存空间。所以,对于vector<bool>来说,每个元素只占用一个位,而不是一个字节。因此,vector<bool>的大小是按位计算的,而不是按字节计算的。
而vector<char>是一个普通的容器,它使用一个字节(byte)来存储每个char类型的数据。在内存中,每个char值占用一个字节。所以,对于vector<char>来说,每个元素占用一个字节。因此,vector<char>的大小是按字节计算的。
所以,两个vector的大小不同是因为vector<bool>的大小是按位计算的,而vector<char>的大小是按字节计算的。