在C ++中将int转换为vector

时间:2018-01-22 03:55:40

标签: c++ casting

我已经看过这段代码,并且很难理解如何将int投射到vector<int>可能有效!

 std::vector<int> v = static_cast<std::vector<int>>(10);
 cout << v.size(); // this prints 10

根据我的理解,int可以说是一维的,而矢量是二维的。

怎么可能被投射到另一个?如果可能的话,我可以看到至少十几种方法可以将int转换为它的集合。为什么这个实例选择“大小”?这是一些内置的惯例吗?

1 个答案:

答案 0 :(得分:4)

  

如何将一个人投射到另一个人?

static_cast<T>(a);
如果a可用于构造T的实例,则

有效。

相当于:

T(a);

来自C++11 Standard

  

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);

很难说出为什么编写这行代码的人会想到以这种方式编写代码。