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

cch*_*ion 3 c++ stl vector

我有一个 std::vector<unsigned char> m_vData;

m_vData.max_size()总是返回-1.为什么会这样?

Jar*_*Par 18

可能是因为您在查看之前将其分配给签名类型.max_size的返回值通常size_t是无符号类型.在许多平台上直接转换为int将返回-1.

请尝试以下方法

std::vector<unsigned char>::size_type v1 = myVector.max_size();
Run Code Online (Sandbox Code Playgroud)


Mic*_*urr 7

请注意,max_size()返回一个vector::size_type未签名的,因此你会看到一个负数,因为它在某处转换(你真的得到一个非常大的无符号数).

实现是说它可以处理具有那么多元素的向量(虽然我怀疑你实际上已经分配了一个).

它不是向量中的元素数量(或者当前为向量保留的).您可以使用vector::size()或获取这些数字vector::capacity().