C++ Can C++;11';s绑定函数可用于std(或更好的mtl)向量?

C++ Can C++;11';s绑定函数可用于std(或更好的mtl)向量?,c++,c++11,vector,bind,std,C++,C++11,Vector,Bind,Std,我试图将不同的随机变量(问题是,它们不是变量,而是函数)保存到向量中: 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}

我试图将不同的随机变量(问题是,它们不是变量,而是函数)保存到向量中:

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};
auto dW0=std::bind(std::normal_distribution{0.0,1},std::default_random_engine{123456});
auto dW1=std::bind(std::normal_distribution{0.0,1},std::default_random_engine{123456+1000});
向量dW={dW0,dW1};
如果我能将这些保存到mtl向量,那就更好了:

mtl::dense_vector<decltype(dW0)> dW = {dW0, dW1};
密集向量dW={dW0,dW1};
但是将它们保存到std向量会有很大帮助。

绑定的
结果类型可以存储在
向量中,因为C++1120.8.9.1.2指定它是
可移动的
(如果绑定的函子和参数是可移动的,也可以是
可复制的

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


我不熟悉
mtl::densite_vector
,但希望它对
std::vector
有兼容的要求,在这种情况下也可以。
bind
的结果类型可以存储在
vector
中,因为C++11 20.8.9.1.2指定它是
可移动的
(如果绑定函子和参数是可复制的,也可以是可复制的

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


我不熟悉
mtl::dense_vector
,但希望它对
std::vector
有兼容的要求,在这种情况下也可以。它们不能直接存储,因为不能保证它们甚至具有相同的类型(在您的情况下,您很幸运,因为两次调用的参数类型都是相同的)。将它们包装在
std::function
中。它们不能直接存储,因为不能保证它们具有相同的类型(在您的情况下,您很幸运,因为两次调用的参数类型都相同)。将它们包装在
std::function
中。