2015-07-12 83 views

回答

9

只是分配一个新的分配给变量:

std::uniform_int_distribution<int> distr(0, 10); 

distr = std::uniform_int_distribution<int>(5, 13); 

或者,创建一个参数(@awesomeyi答案需要分配对象的创建,这仍然需要param_type对象创建)

std::uniform_int_distribution<int> distr(0, 10); 

distr.param(std::uniform_int_distribution<int>::param_type(5, 13)); 

证明参数类型将工作(fo r @stefan):

P是关联的param_type。它应满足 CopyConstructible,CopyAssignable和EqualityComparable 的要求。它也有采取 相同类型作为d的构造的同样的参数构造函数和具有成员函数 相同d的参数,返回吸气剂

http://en.cppreference.com/w/cpp/concept/RandomNumberDistribution

+0

'param_type'是否保证有一个带有两个值的构造函数?我找不到cppreference.com上的任何内容 – stefan

+0

@stefan,用于uniform_int_distribution?是的,你可以通过遵循'param_type'声明来看到它。 – dreamzor

+0

我没有看到标准中param_type构造函数的任何要求。你能指点我吗?我所能看到的就是,'param_type'是一个'typedef unspecified param_type'。这表明,这样的构造函数并不能保证。 – stefan

2

你可以通过param()功能。

std::uniform_int_distribution<int> distr(0, 10); 
std::uniform_int_distribution<int>::param_type d2(2, 10); 
distr.param(d2); 
+1

即无论如何我需要一个新对象...很伤心: – vlad4378

+0

@ vlad4378可能不是这样不好的,你不是经常切换范围,对吗?如果范围的大小是相同的,你可以添加一个偏移量 – stefan

+0

@ vlad4378查看我的编辑 – yizzlez

相关问题