这是一个24个向量都初始化为'-1'的向量吗?如果是这样,那为什么不将类型为“ vector”的小时向量而不是“ double”呢?
我无法想象这种形式的数据结构。
答案 0 :(得分:1)
vector<double> hour { vector<double>(24, -1) };
这将导致一个名为hour
的单个24 -1s向量。 vector<double>(24, -1)
内的{}
是为创建hour
向量而创建的临时向量。
视觉上,省略了“ .0”:
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}
如果是这样,那为什么不将类型为“ vector”的小时向量而不是“ double”呢?
小时向量的类型为vector<double>
。<>用于模板,并在编译时确定向量将包含的类型。
如果它说的是vector<int> hour
,那么它就是int
值而不是double
值的向量。
答案 1 :(得分:1)
根据cppreference page,这是构造函数形式
vector(size_type count,
const T& value,
const Allocator& alloc = Allocator());
// Constructs the container with <count> copies of elements, each with value <value>.
使用默认分配器。
因此,它构造了一个大小为24
的向量,该向量的每个元素都设置为-1
。
hour
的类型既不是double
也不是{em> vector
,它是vector<double>
,令人惊讶地是双精度的向量:- )
答案 2 :(得分:0)
首先要构造一个double型向量的实例,该实例具有以-1.0(隐式)初始化的24个项目,然后将其复制以创建一个新的double型小时向量。
更新: 现代编译器将具有针对该操作使用移动语义的优化,并且不会进行深度复制。
更好的方法是vector<double> hour(24, -1);
答案 3 :(得分:0)
vector<double>(24, -1)
创建一个大小为24
的向量,并将每个值初始化为-1
。 vector <double> hour{vector<double>(24, -1)}
使用副本构造函数复制此向量,因此它也以24
-1
s结尾。
{-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0}