2015-07-12 99 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

相關問題