c++ 如何将std::initializer_list赋值给向量

42fyovps  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(156)

这是一个需要std::initializer_list的构造函数,我想把它赋给一个向量。我需要用for-循环把std::initializer_list中的每一项都赋给向量吗?

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

5hcedyr01#

我是否需要使用for循环[...]?
不可以。为了初始化std::vector<pros::Motor>类型的Motor_Group::motor_vector,应该使用构造函数Motor::Group的成员初始化器列表:

Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set) :
    motor_vector{port_set}
{}

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

chhkpiq4

chhkpiq42#

试试看

this->motor_vector = std::vector{port_set};

或者更好的方法,使用初始化列表:

Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set)
    : motor_vector{port_set} {}

相关问题