簡體   English   中英

類的初始化列表中的向量

[英]Vector in the initializer list of a class

我在一個.hpp文件中定義了一個學習者列表/向量,如下所示:

std::vector<DecisionTree> learners_;

現在在構造函數中,它的用法如下:

Bagging::Bagging(const DataReader& dr, const int ensembleSize, uint seed) : 
  dr_(dr), 
  ensembleSize_(ensembleSize),
  learners_({}) {
  random_number_generator.seed(seed);
  buildBag();
}

構造函數中發生了什么?

程序是否只嘗試填充該向量中的兩個實例,其中第一個是隨機數,第二個是對函數的調用? 但是它如何工作,因為buildBag返回一個決策樹,而第二個參數返回一個整數,我們將其聲明為buildBag的向量?

為什么會有大括號({})

正如我一直使用Java和python編程一樣,這很難理解,它不是來自任何書籍,而是來自代碼示例。

dr_(dr), ensembleSize_(ensembleSize), learners_({}) :它們用於將Bagging Class的對象變量初始化為調用構造函數時提供的特定值。

({})意味着通過初始化列表std::vector<DecisionTree> learners_初始化為一個空向量(這是C ++ 11的事情)。

{
  random_number_generator.seed(seed);
  buildBag();
}

最后,這些語句是Bagging類的構造函數的主體。 創建對象時執行的普通命令。

暫無
暫無

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

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