簡體   English   中英

如何將 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;
}

我需要使用 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}
{}

初始化應該優先於構造函數體中的賦值,因為它首先導致不必要地調用數據成員的默認構造函數。 這不一定是可衡量的性能損失(但在極少數情況下可能是),而是需要比簡單初始化更多思考的控制流。

嘗試

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM