有关STL中的max_size()

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

谢谢。。。。****_

1个回答

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

qq_21160863
諾呉 哦哦 明白了 。。 再次感谢。。 谢谢。。
大约 4 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复昵称短一点: 理论上限而已
大约 4 年之前 回复
qq_21160863
諾呉 回复caozhy: 哦哦 你的意思是 那是一个string对象能使用最大空间的上限???
大约 4 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复昵称短一点: 不是分配这么多,max_size不是返回已分配的大小。
大约 4 年之前 回复
qq_21160863
諾呉 首先非常感谢你能回答。。。 还想请教一下,为什么编译器在给string分配空间的时候直接分配2^32,也就是int的最大值??
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问