[英]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++ 不喜歡我聲明的方式,給出錯誤“變量或字段隨機播放聲明無效”。 根據我的發現,這可能是一條無關緊要的錯誤消息,但我無法弄清楚這里到底出了什么問題。
uint
與std::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.