![](/img/trans.png)
[英]How to accept both std::vector and 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.