这是一个需要 std::initializer_list 的构造函数,我想将它分配给一个向量。我是否需要使用 for 循环将 std::initializer_list 中的每个项目一一分配给向量?
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
{
this->motor_vector = port_set;
}
这是一个需要 std::initializer_list 的构造函数,我想将它分配给一个向量。我是否需要使用 for 循环将 std::initializer_list 中的每个项目一一分配给向量?
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
{
this->motor_vector = port_set;
}
我需要使用 for 循环 [...] 吗?
不,为了初始化Motor_Group::motor_vector
类型std::vector<pros::Motor>
,你应该使用构造函数的成员初始化列表Motor::Group
:
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set) :
motor_vector{port_set}
{}
初始化应该优先于构造函数主体中的赋值,因为它首先会导致不必要地调用数据成员的默认构造函数。这不一定是可衡量的性能损失(但在极少数情况下可能是这样),而是需要更多思考而不是简单初始化的控制流。
尝试
this->motor_vector = std::vector{port_set};
或者更好,使用初始化列表:
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
: motor_vector{port_set} {}