如何使用std::uniform_int_distribution<T>::param()?

How to use std::uniform_int_distribution<T>::param()?

我希望能够在 std::uniform_int_distribution<T> 对象创建后重置它的下限和上限,而且似乎 class 中的 param 函数允许这个功能。参见 https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution/param (2)。

但我不清楚如何构建它接收的这个 param_type 对象。有人可以提供示例吗?

从文档上看不是很清楚,但这里是:

auto d = std::uniform_int_distribution<int>{1, 10};

d.param(std::uniform_int_distribution<int>::param_type{11, 24});

您可以通过以下方式在文档中找到此信息:

std::uniform_int_distribution

Member types

param_type: the type of the parameter set, see RandomNumberDistribution.

RandomNumberDistribution

P, the type named by D::param_type, which

  • [...]
  • has a constructor taking identical arguments as each of the constructors of D that take arguments corresponding to the distribution parameters.

所以基本上 std::uniform_int_distribution<int>::param_type 有一个构造函数采用与 std::uniform_int_distribution<int> 相同的参数。