2012-03-29 53 views
3

我想初始化的boost ::隨機:: discrete_distribution具有雙重[]是這樣的:如何使用double []初始化boost :: random :: discrete_distribution;

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

我知道我可以使用矢量或大小固定的表,但是有什麼辦法來克服無需重寫我的_distr?

+0

+1對你有我見過的最大的Gravatar。我不知道有可能做這樣的事情。 – 2012-03-29 21:40:57

回答

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取得了相當明顯的。

+0

謝謝!這就是我期待的答案! – Emsi 2012-03-29 21:56:38