我正在使用一个函数的库,该函数具有 int
类型的参数。
我需要传递向量的大小作为此参数的参数。
我知道我可以使用 someVector.size()
获取向量的大小,但这返回了 size_t
的类型。
我知道我可以将size_t
投射到int
:例如 static_cast<int>(someVector.size())
. 但是,如果someVector.size()
超过 int
的最大值,则强制转换可能会导致问题。
向量的大小传递给需要 int
类型参数的函数的正确方法是什么?
没有"安全"的方法可以将std::size_t
传递给接受int
的函数(只要size_t
大于最大可表示int
您遇到麻烦)。但是,您可以测试通过是否安全:
if(v.size() < std::numeric_limits<int>::max()) // need to #include <limits>
{
// safe to pass
}
else
{
// not safe, throw error/exit/print something
}
只要int
为正,比较始终是安全的。
我会查看库文档以寻找解决方案,它们可能会接受与size_t
非常相似的 unsigned int
类型的值。这是另一篇可能会有所帮助的文章:无符号的int与size_t。