为啥两个向量的大小<bool> bVec = true,false,true,false,true;向量<char> cVec = 'a', 'b', 'c', 'd',
Posted
技术标签:
【中文标题】为啥两个向量的大小<bool> bVec = true,false,true,false,true;向量<char> cVec = \'a\', \'b\', \'c\', \'d\', \'e\' ;是不同的?【英文标题】:why the size of two vector<bool> bVec = true,false,true,false,true; vector<char> cVec = 'a', 'b', 'c', 'd', 'e' ; are different?为什么两个向量的大小<bool> bVec = true,false,true,false,true;向量<char> cVec = 'a', 'b', 'c', 'd', 'e' ;是不同的? 【发布时间】:2017-01-23 09:46:25 【问题描述】:#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 。但是为什么大小不一样?
【问题讨论】:
std::vector< bool >
是一种特殊的……动物。见***.com/questions/17794569/…
【参考方案1】:
std::vector<bool>
是std::vector
的一个特例,它以节省空间的方式存储数据并返回代理对象而不是bool&
来操作数据。因此,它通常具有与普通 std::vector
不同的成员数据,因此存在大小差异。
【讨论】:
以上是关于为啥两个向量的大小<bool> bVec = true,false,true,false,true;向量<char> cVec = 'a', 'b', 'c', 'd', 的主要内容,如果未能解决你的问题,请参考以下文章