std::array
在C 領域, std::array
考慮以下程式碼片段:
<code class="cpp">template<typename T, int N> void f(T value) { std::array<T, N> items = {value, value, value, value, value}; }</code>
雖然簡單,但手動重複該值會變得乏味,因為N 增加。為了解決這個問題,一種更優雅的方法是利用 C 17 的結構化綁定和可變參數模板。
利用序列產生器和重複函數
這個優雅的關鍵解決方案在於產生一個序列類型的seq使用genseq_t發電機。有了這個序列類型,我們可以定義一個重複函數,它接受一個值和產生的序列作為參數,並傳回一個 std::array
範例實作
<code class="cpp">template<typename T, int N> void f(T value) { // genseq_t<N> represents seq<0,1,...N-1> std::array<T, N> items = repeat(value, genseq_t<N>{}); }</code>
模式詳細資料
以上是如何在 C 中使用非預設可構造型別優雅地初始化 `std::array` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!