繁体   English   中英

为什么std :: vector max_size()函数返回-1?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM