返回信息流vector<bool> A;
cout<<A.max_size()<<endl;
vector<int> B;
cout<<B.max_size()<<endl;
输出分别是4294967295,1073741823
请问为什么是这两个数?
这是一条镜像帖。来源:北邮人论坛 / cpp / #74005同步于 2013/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
弱问STL中的vector
origin
2013/9/28镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
【 在 origin 的大作中提到: 】
: [code=c]
: vector<bool> A;
: cout<<A.max_size()<<endl;
: ...................
这个跟你用的编译器和系统有关。非说为什么,那就是你的编译器出于种种考虑最后决定了这个数。。
32位的内存,最大容纳的整形个数就是2^32/4=1073741823了,至于vector<bool>,为了存储空间的高效,vector<bool>经过了特化处理,已经不能算作一个容器了,在gcc中是按照bit来存储的,其max_size就是无符号整形数所能表示的最大数。
http://www.cplusplus.com/reference/vector/vector-bool/
看看这个
【 在 gaoweiwei 的大作中提到: 】
: 32位的内存,最大容纳的整形个数就是2^32/4=1073741823了,至于vector<bool>,为了存储空间的高效,vector<bool>经过了特化处理,已经不能算作一个容器了,在gcc中是按照bit来存储的,其max_size就是无符号整形数所能表示的最大数。