C++ 如何将std::initializer\u列表分配给向量

C++ 如何将std::initializer\u列表分配给向量,c++,stdvector,stdinitializerlist,C++,Stdvector,Stdinitializerlist,这是一个需要std::initializer\u列表的构造函数,我想将它分配给一个向量。我是否需要使用for循环将std::initializer_列表中的每个项逐个分配给向量 Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set) { this->motor_vector = port_set; } 试一试 这->电机矢量=标准::矢量{port\u set}; 或者更好地使用初始化列表

这是一个需要std::initializer\u列表的构造函数,我想将它分配给一个向量。我是否需要使用for循环将std::initializer_列表中的每个项逐个分配给向量

Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
{
  this->motor_vector = port_set;
}
试一试

这->电机矢量=标准::矢量{port\u set}; 或者更好地使用初始化列表:

电机组::电机组STD::初始化器列表端口集 :马达向量{端口集}{} 我需要使用for循环[…]吗

否。要初始化std::vector类型的Motor_Group::Motor_vector,应使用构造函数Motor::Group的成员初始值设定项列表:


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

您是否尝试过使用普通赋值,如所示代码中所示?是的,它向我显示了一堆垃圾错误消息,当我根据文档对其进行注释时,vector有一个接受初始值设定项列表的赋值运算符:考虑到它应该可以工作,那么也许您应该询问您得到的错误。关于错误的直接问题总是比用这样的间接问题来回避实际问题和问题更快地提出和得到答案。我认为a在这方面会有很大帮助。
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set) :
    motor_vector{port_set}
{}