-5

I am trying to write a code using c++ for the first time and I found this line:

vector<vector<vector<double> > > h(hist1, vector<vector<double> >(hist2, vector<double>(nb_bins, 0.0)));

I don't understand what does it means, can you help me guys? Thanks.

4

2 回答 2

2

让我们打开它!

vector<vector<vector<double> > >
  h(hist1,
    vector<vector<double> > (hist2,
                             vector<double> (nb_bins, 0.0) ) );

这是一个vector<vector<vector<double> > >名为的变量的声明hh通过调用其构造函数进行初始化,作为第一个参数传入hist1,并作为第二个参数传入一个临时对象类型vector<vector<double> >。这个临时对象依次通过调用它的构造函数来初始化,hist2作为它的第一个参数传入,一个临时对象vector<double>作为它的第二个参数传入。然后通过调用它的构造函数来初始化第二个临时变量,nb_bins作为它的第一个参数和0.0第二个参数传入。

hist1结果是这最终充当了一个维度为× hist2×的三维数组nb_bins,其中每个值都初始化为 0.0。

也就是说,如果您想使用 3D 数组,请查看 Boost.MultiArray 包,它提供了一种简洁的方法来执行此操作。

希望这可以帮助!

于 2013-06-18T19:51:59.817 回答
0

它是 double 向量的向量的向量,类似于 double 的三维数组。见这里:http ://www.cplusplus.com/reference/vector/vector/

于 2013-06-18T19:53:29.317 回答