[英]cannot create std::vector larger than max_size() for size below max_size
[英]why would std::vector max_size() function return -1?
我有一个std::vector<unsigned char> m_vData;
m_vData.max_size()
始终返回-1。 为什么会这样?
可能是因为您在查看之前将其分配给签名类型。 max_size的返回值通常是size_t
,它是无符号类型。 在许多平台上直接转换为int将返回-1。
请尝试以下方法
std::vector<unsigned char>::size_type v1 = myVector.max_size();
请注意, max_size()
返回一个未签名的vector::size_type
,因此你会看到一个负数,因为它在某处转换(你真的得到一个非常大的无符号数)。
实现是说它可以处理具有那么多元素的向量(虽然我怀疑你实际上已经分配了一个)。
它不是向量中的元素数量(或者当前为向量保留的)。 您可以使用vector::size()
或vector::capacity()
获取这些数字。
请注意,在大多数平台上, std::vector<unsigned char>::max_size
很可能与std::numeric_limits<unsigned int>::max()
,当转换为a时,它当然是-1签名int。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.