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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
STL vector中的max_size方法(29)
public member function std::vector::max_size C++98 C++11 size_type max_size() const noexcept; Return maximum size Returns the maximum number of elements that the vector
STL array的max_size方法(14)
原文地址:http://www.cplusplus.com/reference/array/array/max_size/ public member function std::array::max_size constexpr size_type max_size() noexcept; Return maximum size Returns the ma
STL容器deque使用
STL容器deque使用deque简介deque与vector非常相似。它也采用动态数组来管理元素,提供随机存取,并有着和vector几乎一模一样的接口。不同的是deque的动态数组头尾都开放,因此能在头尾两端进行快速安插和删除。与vector相比,deque功能上的不同在于: 两端都能快速安插元素和移除元素(vector只在尾端插入)。这些操作可以在分期摊还的常数时间内完成。 存取元素时
STL vector中的capacity()方法(14)
//翻译的不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。 转载请注明出处:http://blog.csdn.net/qq844352155 2014-8-12 于GDUT
关于c++ vector capacity、max_size、size、sizeof的区别
capacity,如果不重新分配内存,当前已经分配的可以容纳的元素的个数. max_size最大的可能的元素个数. size是当前元素个数 sizeof是vector本身的大小(sizeof(vector)) size()告诉你容器中有多少元素。它没有告诉你容器为它容纳的元素分配了多少内存。capacity()告诉你容器在它已经分配的内存中可以容纳多少元素。那是容器在那块内存中总共
STL vector中的max_size方法
原文地址:http://www.cplusplus.com/reference/vector/vector/max_size/public member function<vector>std::vector::max_sizeC++98C++11size_type max_size() const noexcept;Return maximum sizeReturns the max...
容器的capacity、max_size以及内存分配
capacity - 容器的成员函数capacity()取得 max_size - 容器的成员函数max_size()取得 STL容器的capacity属性,表示STL在发生realloc前能允许的最大元素数,也可以理解为预分配的内存空间。例如一个vector v的capacity为5,当插入第6个元素时,vector会realloc,vector内部数据会复制到另外一个内存区域。这样
以下关于STL的描述中,错误的有
以下关于STL的描述中,____是错的。 正确答案: C   你的答案: A (错误) STL容器是线程不安全的 当容量不够时,vector内部内存扩展方式是翻倍 std::sort是稳定排序 std::bitset不是一个STL容器 std::stack默认是用deque实现的 std::string中可以存储多个’\0’
STL容器之size()函数的实现
vector   O(1) list        O(n) deque 以下转自:http://www.07net01.com/2014/09/79439.html 使用C++进行开发,一部分人可能喜欢使用STL,即C++标准模板库。对容器使用可能最多,算法相对比较少。我在开发中基本上也就是使用容器:vector, list, deque, map, hashtable, has
C++基础---string类的capacity/max_size/size/length/empty/reserve/resize
1. string中capacity/max_size/size/length/empty/reserve/resize 1.1 std::string::capacity 原型: size_t capacity() const; 说明: 返回string分配的存储容量。 1.2 std::string::max_size 原型: size_t max_size() const; 说明: 返回string对象中