提问人:BENG 提问时间:8/10/2023 最后编辑:LoSBENG 更新时间:9/27/2023 访问量:125
这是有效的初始化吗?
Is this an efficient initialization?
问:
我想创建一个数学向量类,其主要数据是 .我还想编写构造函数以接收并将其初始化为数据属性。在我的代码中,我将对元素的类型和向量的大小进行模板化,但现在我将为四个整数的向量编写代码:std::array
std::array
class MyVector {
private:
std::array<int,4> data;
public:
MyVector(std::array<int,4> input)
:data{ input } {}
}
使用隐式构造函数,我可以定义一个对象,如下所示:MyVector
MyVector v({0, 1, 2, 3});
我的问题是:这种初始化是多余的吗?我是否只是为了通过它而创造一个额外的东西?std::array
编译器是否首先从列表创建,然后使用初始值设定项列表将其复制到对象中的属性?或者编译器是否只是在对象属性的内存地址中创建。如果我正在创建一个额外的,有没有一种更有效的方法可以使用符号输入 s,而无需创建复制数组的额外步骤?请记住,我想完成此操作,因为我希望 MyVector 类是模板化的,因此 的长度是可变的。input
{0, 1, 2, 3}
data
std::array
data
std::array
int
{}
{}
编辑:
我看到提到.这本质上是我正在做的事情的植入,还是有一些编译器快捷方式?我可以用于 s 吗?我不想使用,因为我希望 MyVector 类在自动内存上实例化,而不是在可用内存上实例化。std::initializer_list
std::initializer_list
std::array
std::list
答: 暂无答案
下一个:为此任务分配内存的最快方法
评论
MyVector
std::array