标题说明了一切.文档页面中甚至还有一个警告:
为什么这样,当C++中的常见做法是使用开放范围[开始,结束]?
只有封闭范围,您可以创建一个uniform_int_distribution
产生任何整数的:
uniform_int_distribution<int> dist(std::numeric_limits<int>::min(), std::numeric_limits<int>::max());
Run Code Online (Sandbox Code Playgroud)
如果这是一个半开放的范围,你永远无法达到std::numeric_limits<int>::max()
,但只是std::numeric_limits<int>::max() - 1
.
这std::uniform_int_distribution
与C++ 11标准库中的情况相同.
迭代器的半开范围很常见,因为可以很容易地表示空范围(通过设置begin == end
).这对于发行版没有意义.
参考:Stephan T. Lavavej 在2013年Going Native(大约14分钟)的演讲中提到了这个确切的原因"rand()被认为是有害的".这个讲座是关于C++ 11的<random>
,但当然同样的推理也适用于boost.
归档时间: |
|
查看次数: |
185 次 |
最近记录: |