如何正确地将向量的大小传递给需要 int 的函数
How do I properly pass the size of a vector to a function requiring an int?
我正在使用一个函数的库,该函数具有 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。
相关文章:
- 在函数 'int main(int, char**) 中,没有声明 'MIN'
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- 重载函数 int vs double
- 错误 C2084:函数"int main(void)"已具有主体
- 无效使用非静态成员函数 int test::funcAB(int, int)
- 错误:函数"int open(...)"的隐式声明
- 如何在没有参数的情况下实现返回双向链表大小的函数?int size() const.
- 错误:参数太少,无法函数"int Solution(std::vector<int>, int)"
- arr++ 在函数"int f(int arr[])"中是什么意思?
- 带有声明帐户的C 构造函数(int = 0);
- 如何初始化一个在C++中期望向量和变量的构造函数<int>?
- C++,实现函数"int next(std::string param)"时出现奇怪的编译器错误
- 单链表交换函数(int,int)
- 插入 std::map<int, std::vector 的简短函数<int>>
- 函数int get()和istream&get(char&c)有什么区别
- 该函数 int f() 没有警告不返回任何值?
- 没有用于启动"ostream_iterator"的匹配构造函数<int>
- 函数"int __cdecl invoke_main(void)"中引用LNK2019未解析的外部符号_main错误 (?invoke_main@@YAHXZ)
- 函数"int (*function())[10];"是什么意思?
- 非成员函数 'int find(const T&)' 不能有 cv 限定符