类的初始化列表中的向量

时间:2019-04-09 02:38:14

标签: c++

我在一个.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返回了决策树,而第二个参数返回了一个整数,我们将其声明为DecisionTrees的向量?

为什么会有大括号({})

正如我一直使用Java和python进行编程一样,这很难理解,它不是来自任何书籍,而是来自代码示例。

1 个答案:

答案 0 :(得分:2)

dr_(dr), ensembleSize_(ensembleSize), learners_({}):用于将Bagging类的对象变量初始化为调用构造函数时提供的特定值。

({})意味着std::vector<DecisionTree> learners_通过初始化器列表初始化为一个空向量(这是C ++ 11的事情)。

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

最后,这些语句是Bagging类的构造函数的主体。创建对象时执行的普通命令。