如何正确地将向量的大小传递给需要 int 的函数

How do I properly pass the size of a vector to a function requiring an int?

本文关键字:函数 int 正确地 向量      更新时间:2023-10-16

我正在使用一个函数的库,该函数具有 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。