2 qq 21160863 qq_21160863 于 2016.04.16 20:17 提问

有关STL中的max_size()

在STL中,像vector、list、string这些容器都含有max_size()这个函数,想请教一下,关于这个max_size()函数的值。在我机子上vector的max_size()=1073741823,list的max_size()=357913941,而string的max_size()=4294967294。。。请问这些值是固定的吗?? 为什么要设为这么大的值??是由电脑的配置决定的吗??? ***

谢谢。。。。****_

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.16 20:22
已采纳

4294967294是2^32,也就是用一个int表示长度,能表示的最大值。
1073741823是上一个值的1/4,如果有什么原因它需要的存储是前者的4倍的话,那么最大值就是1/4。
这个应该是C++编译器/标准库规范/操作系统决定的, 不是电脑配置决定的。

qq_21160863
qq_21160863 哦哦 明白了 。。 再次感谢。。 谢谢。。
一年多之前 回复
caozhy
caozhy 回复昵称短一点: 理论上限而已
一年多之前 回复
qq_21160863
qq_21160863 回复caozhy: 哦哦 你的意思是 那是一个string对象能使用最大空间的上限???
一年多之前 回复
caozhy
caozhy 回复昵称短一点: 不是分配这么多,max_size不是返回已分配的大小。
一年多之前 回复
qq_21160863
qq_21160863 首先非常感谢你能回答。。。 还想请教一下,为什么编译器在给string分配空间的时候直接分配2^32,也就是int的最大值??
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.16 20:22

STL array的max_size方法(14)
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!