2012-03-29 8 views
3

Ich mag boost :: Random :: discrete_distribution mit einem Doppel [] wie folgt initialisieren:Wie boost :: random :: diskret_distribution mit double [] initialisiert wird;

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

Ich weiß, ich Vektor oder statisch Größe Tabelle verwenden kann, aber gibt es eine Möglichkeit, das zu überwinden, ohne mein zu Umschreiben _distr?

+0

ein +1 zu Ihnen für den größten Gravatar, den ich je gesehen habe. Ich wusste nicht, dass so etwas möglich ist. –

Antwort

1

discrete_distribution<> kann nicht einfach double* Argument nehmen, weil es keine Möglichkeit zu wissen, wie lange das Array hat.

Stattdessen dauert es einen Iterator Bereich, aber Sie werden die Anzahl der Elemente im Array angeben:

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

Wie üblich, diese in the documentation ganz klar gemacht wird.

+0

Danke! Das ist die Antwort, auf die ich gehofft hatte! – Emsi