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};

但是将它们保存到标准向量会很有帮助。

4

1 回答 1

4

的结果类型bind可以存储在 a 中vector,因为 C++11 20.8.9.1.2 指定它是MoveConstructible(并且CopyConstructible如果绑定的函子和参数是)。

但是注意,bind绑定不同的函子和参数类型时,结果类型会有所不同;并且向量中的所有对象必须具有相同的类型。在您的示例中,这很好;但如果您需要更大的灵活性(例如不同的发行版或引擎),那么您需要存储更通用的仿函数类型,例如std::function.

我不熟悉mtl::dense_vector,但希望它具有与 兼容的要求std::vector,在这种情况下也应该没问题。

于 2013-09-26T13:09:05.653 回答