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

时间:2015-04-30 01:36:31

标签: c++ vector size-t function-parameter

我正在使用一个函数,其函数的参数类型为int

我需要传递向量的大小作为此参数的参数。

我知道我可以使用someVector.size()获取向量的大小,但这会返回size_t类型。

我知道我可以将size_t投放到int:例如static_cast<int>(someVector.size())。但是,如果someVector.size()超过int的最大值,则施法可能会导致问题。

将向量大小传递给需要int类型参数的函数的正确方法是什么?

2 个答案:

答案 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