クラス内のディストリビューションの使用に関する2つの関連する質問があります。C++のクラスのメンバーとしての配布
ディストリビューションをクラスメンバとして使用するために、ディストリビューションがどのディストリビューションであるかを知らないで、何らかの種類のディストリビューションディストリビューションがありますか?私はプライベートメンバ(
std::vector<Foo>
)としてFoo
のベクトルを持つべきである別のクラスBar
を持ってclass Foo{ private: // could by any distribution std::base_distribution dist_; };
(質問2を参照)、テンプレートを使用することはできません。問題は、
Foo
がテンプレートを使用する場合、まさに私が望むものである異なるテンプレート引数のベクトルを持つことはできないということです。class Bar { private: std::vector<Foo> foo_; };
boost::variant
私はディストリビューションの種類が分からないので、どちらか助けていません。したがって、この(たとえば)私の場合は不可能である。私の知る限り
class Bar{
private:
boost::variant<std::normal_distribution<>, std::uniform_real_distribution<> > dists_;
};
一種の乱数エンジンをサポートすればよい場合は、 'std :: function'だけで十分です。 –