3

我想用这样的 double[] 初始化 boost::random::discrete_distribution:

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

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

4

1 回答 1

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);
}

像往常一样,这在文档中非常清楚。

于 2012-03-29T21:53:39.327 回答