如何将 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}
{}

初始化应该优先于构造函数主体中的赋值,因为它会首先导致不必要地调用数据成员的默认构造函数。这不一定是可衡量的性能损失(虽然在极少数情况下可能是),但控制流需要比普通初始化更多的想法。