我已经看过这段代码,并且很难理解如何将int
投射到vector<int>
可能有效!
std::vector<int> v = static_cast<std::vector<int>>(10);
cout << v.size(); // this prints 10
根据我的理解,int可以说是一维的,而矢量是二维的。
怎么可能被投射到另一个?如果可能的话,我可以看到至少十几种方法可以将int转换为它的集合。为什么这个实例选择“大小”?这是一些内置的惯例吗?
答案 0 :(得分:4)
如何将一个人投射到另一个人?
static_cast<T>(a);
如果a
可用于构造T
的实例,则有效。
相当于:
T(a);
4否则,如果声明
e
很好,则可以使用T
形式的static_cast
将表达式static_cast<T>(e)
显式转换为T t(e);
类型-formed,对于一些发明的临时变量t
。
在您的情况下,它是有效的,因为std::vector
具有以下构造函数:
explicit vector( size_type count,
const T& value = T(),
const Allocator& alloc = Allocator());
<强> PS 强>
该行
std::vector<int> v = static_cast<std::vector<int>>(10);
可以简化为
std::vector<int> v(10);
很难说出为什么编写这行代码的人会想到以这种方式编写代码。