繁体   English   中英

C++ 用随机值填充模板数组

[英]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); });
}

https://godbolt.org/z/s4W46334z

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM