簡體   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