如何将 std::initializer_list 分配给向量

Ede*_*ung 2 c++ stdvector stdinitializerlist

这是一个需要 an 的构造函数std::initializer_list,我想将它分配给一个向量。我是否需要使用for-loop 将 中的每一项std::initializer_list逐一分配给向量?

Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
{
  this->motor_vector = port_set;
}
Run Code Online (Sandbox Code Playgroud)

lub*_*bgr 5

我需要使用 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}
{}
Run Code Online (Sandbox Code Playgroud)

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