繁体   English   中英

std::array 模板 function

[英]std::array template function

我有一个简单的 function 来洗牌 std::array 中的元素

template <typename T, uint size>
void Shuffle(std::array<T, size> &arr) {
    for (uint i = 0; i < arr.size() - 1; i++)
    {
        std::swap(arr[i], arr[Random(i, arr.size())]);
    }
}

make/g++ 不喜欢我声明的方式,给出错误“变量或字段随机播放声明无效”。 根据我的发现,这可能是一条无关紧要的错误消息,但我无法弄清楚这里到底出了什么问题。

uintstd::array的第二个模板参数的类型不匹配,即std::size_t 这会导致调用Shuffle时模板参数推导失败,除非您明确指定模板 arguments。

您应该使用std::size_t类型声明第二个模板参数。 例如

template <typename T, std::size_t size>
void Shuffle(std::array<T, size> &arr)

暂无
暂无

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

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