如何将 std::initializer_list 分配给向量
how to assign std::initializer_list to a vector
这是一个需要 std::initializer_list 的构造函数,我想将它分配给一个向量。我是否需要使用 for 循环将 std::initializer_list 中的每个项目一一分配给向量?
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
{
this->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} {}
Do i need to use a for loop [...]?
没有。为了初始化 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}
{}
初始化应该优先于构造函数主体中的赋值,因为它会首先导致不必要地调用数据成员的默认构造函数。这不一定是可衡量的性能损失(虽然在极少数情况下可能是),但控制流需要比普通初始化更多的想法。
这是一个需要 std::initializer_list 的构造函数,我想将它分配给一个向量。我是否需要使用 for 循环将 std::initializer_list 中的每个项目一一分配给向量?
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
{
this->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} {}
Do i need to use a for loop [...]?
没有。为了初始化 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}
{}
初始化应该优先于构造函数主体中的赋值,因为它会首先导致不必要地调用数据成员的默认构造函数。这不一定是可衡量的性能损失(虽然在极少数情况下可能是),但控制流需要比普通初始化更多的想法。