我有一个 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)
请注意,max_size()
返回一个vector::size_type
未签名的,因此你会看到一个负数,因为它在某处转换(你真的得到一个非常大的无符号数).
实现是说它可以处理具有那么多元素的向量(虽然我怀疑你实际上已经分配了一个).
它不是向量中的元素数量(或者当前为向量保留的).您可以使用vector::size()
或获取这些数字vector::capacity()
.