[英]C++ Fill template array with random values
如何用随机值填充模板数组? 我想根据类型(或char、int、double或float)填充数组,并使用模板函数。 我有错误:C2297 '%': 非法,右操作数有类型'T'模板。
我的代码:
template <typename T>
void fillArray(T arr[], int n, T a, T b)
{
if (is_same<T, char>::value)
{
T c;
int r, aNo, bNo;
aNo = (int)a - 97;
bNo = (int)b - 97;
for (int i = 0; i < n; i++)
{
r = rand() % (bNo - aNo + 1) + aNo;
arr[i] = (T)r + 97;
}
}
else if (is_same<T, double>::value || is_same<T, float>::value)
{
for (int i = 0; i < n; i++)
{
T f = (T)rand() / RAND_MAX;
arr[i] = a + f * (b - a);
}
}
else if (is_same<T, int>::value)
{
for (int i = 0; i < n; i++)
{
T f = (T) (rand() % b + a);
arr[i] = f;
}
}
}
template <typename T, typename U>
void uniform_fill_random(T& v, U from, U to)
{
static std::random_device device;
static std::mt19937 engine { device() };
std::uniform_int_distribution<U> dist { from, to };
std::ranges::generate(v, [&]() { return dist(device); });
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.