这是一个需要std::initializer_list的构造函数,我想把它赋给一个向量。我需要用for-循环把std::initializer_list中的每一项都赋给向量吗?
std::initializer_list
for
Motor_Group::Motor_Group(std::initializer_list<pros::Motor> port_set) { this->motor_vector = port_set; }
5hcedyr01#
我是否需要使用for循环[...]?不可以。为了初始化std::vector<pros::Motor>类型的Motor_Group::motor_vector,应该使用构造函数Motor::Group的成员初始化器列表:
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} {}
在构造函数体中,初始化应该比赋值更好,因为它会导致首先不必要地调用数据成员的默认构造函数。这不一定是一个可测量的性能损失(尽管在极少数情况下可能是),但控制流比简单的初始化需要更多的思考。
chhkpiq42#
试试看
this->motor_vector = std::vector{port_set};
或者更好的方法,使用初始化列表:
2条答案
按热度按时间5hcedyr01#
我是否需要使用for循环[...]?
不可以。为了初始化
std::vector<pros::Motor>
类型的Motor_Group::motor_vector
,应该使用构造函数Motor::Group
的成员初始化器列表:在构造函数体中,初始化应该比赋值更好,因为它会导致首先不必要地调用数据成员的默认构造函数。这不一定是一个可测量的性能损失(尽管在极少数情况下可能是),但控制流比简单的初始化需要更多的思考。
chhkpiq42#
试试看
或者更好的方法,使用初始化列表: