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 に答える