我正在使用一个函数,其函数的参数类型为int
。
我需要传递向量的大小作为此参数的参数。
我知道我可以使用someVector.size()
获取向量的大小,但这会返回size_t
类型。
我知道我可以将size_t
投放到int
:例如static_cast<int>(someVector.size())
。但是,如果someVector.size()
超过int
的最大值,则施法可能会导致问题。
将向量大小传递给需要int
类型参数的函数的正确方法是什么?
答案 0 :(得分:2)
没有“安全”方式将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
为正数,则比较始终是安全的。
答案 1 :(得分:0)
我会查看库文档中的解决方案,他们可能会接受unsigned int
类型的值,这与size_t
非常相似。以下是另一篇可能有用的帖子:unsigned int vs. size_t。