使用std :: uniform_int_distribution并在以后定义其范围 [英] Use std::uniform_int_distribution and define its range later
本文介绍了使用std :: uniform_int_distribution并在以后定义其范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在要在结构中创建std::uniform_int_distribution
并在以后提供其范围时遇到问题.下面是我想要的.
I have problem where I want to create a std::uniform_int_distribution
in a struct and then give its range later. Below is what I want.
#include <random>
#include <iostream>
std::random_device rd;
std::mt19937 gen(rd());
struct group_s {
int k;
std::uniform_int_distribution<> dis;
} group;
int main()
{
group.dis(0,19);
std::cout << group.dis(gen) << ' ';
}
我收到以下错误:
no match for call to '(std::uniform_int_distribution<>) (int, int)'
cpu_group.dis(0,19);
我该怎么做?
推荐答案
您可以做
group.dis = std::uniform_int_distribution<>(0,19);
或
group.dis.param(std::uniform_int_distribution<>::param_type(0,19));
另一种方法是向您的结构添加方法
Another way would be to add a method to your struct
struct group_s {
int k;
std::uniform_int_distribution<> dis;
void set(int a, int b) { dis = std::uniform_int_distribution<>(a,b); }
} group;
group.set(0,19);
这篇关于使用std :: uniform_int_distribution并在以后定义其范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文