0

さまざまな確率変数を保存しようとしています (問題は、変数ではなく関数です) をベクトルに保存しようとしています。

auto dW0 = std::bind(std::normal_distribution<double>{0.0, 1}, std::default_random_engine{123456});
auto dW1 = std::bind(std::normal_distribution<double>{0.0, 1}, std::default_random_engine{123456+1000});

std::vector<decltype(dW0)> dW = {dW0, dW1};

これらを mtl-vector に保存できればさらに良いでしょう:

mtl::dense_vector<decltype(dW0)> dW = {dW0, dW1};

しかし、それらを std-vector に保存すると非常に役立ちます。

4

1 に答える 1

4

C++11 20.8.9.1.2 では であると指定されているため、の結果の型はbindに格納できます(また、バインドされたファンクターと引数が である場合)。vectorMoveConstructibleCopyConstructible

ただし、bind異なるファンクターと引数の型をバインドする場合、 の結果の型は異なることに注意してください。ベクトル内のすべてのオブジェクトは同じ型でなければなりません。あなたの例では、それで問題ありません。しかし、より柔軟性が必要な場合 (さまざまなディストリビューションやエンジンなど)、 のようなより一般的なファンクター タイプを格納する必要がありますstd::function

私は に慣れていませんmtl::dense_vectorが、 と互換性のある要件があることを願っていますstd::vector

于 2013-09-26T13:09:05.653 に答える