为什么两个向量的大小<bool> bVec = {true,false,true,false,true}; vector <char> cVec = {'a','b','c','d','e'};是不同的?

时间:2017-01-23 09:46:26

标签: c++ vector std

#include <iostream>
#include<vector>
using namespace std;
bool a;
char c;
int main() {

    vector<bool> bVec = { true,false,true,false,true};
    vector<char> cVec = { 'a', 'b', 'c', 'd', 'e' }; 
    cout<<sizeof( bVec );cout<<endl;
    cout<<sizeof( cVec );
    cout<<endl;
    cout<<sizeof(a);
    cout<<endl;
    cout<<sizeof(c);

    return 0;
}

当我编译这段代码时,我得到cVec的大小为20,bvec的大小为12。但为什么尺寸不同?

1 个答案:

答案 0 :(得分:0)

std::vector<bool>std::vector的特例,它以节省空间的方式存储数据,并返回代理对象而不是bool&来操纵数据。因此,它通常具有与正常std::vector不同的成员数据,因此具有大小差异。