如何使用double []初始化boost :: random :: discrete_distribution;

时间:2012-03-29 21:37:09

标签: c++ boost boost-random

我想用double []初始化boost :: random :: discrete_distribution,如下所示:

boost::random::discrete_distribution<>* distribution(double* _distr)
{
    return new boost::random::discrete_distribution<>(_distr);
}

我知道我可以使用矢量或静态大小的表但是有没有办法克服它而不重写我的_distr?

1 个答案:

答案 0 :(得分:1)

discrete_distribution<>不能采用普通的double*参数,因为它无法知道数组的长度。

相反,它需要一个迭代器范围,但你必须指定数组中元素的数量:

boost::random::discrete_distribution<>* distribution(double const* distr,
                                                     std::ptrdiff_t count)
{
    return new boost::random::discrete_distribution<>(distr, distr + count);
}

像往常一样,这在the documentation中非常明确。