不重複地初始化非預設可構造std::array
在C 中,初始化非預設可建構元素的std:: array可能是一個挑戰。當陣列大小 n 很大或模板參數時,標準初始化方法變得很麻煩。
解決方案:
一個優雅的解決方案利用迭代器和模板的組合。它的運作原理如下:
我們定義兩個輔助實用程式:
使用這些實用程序,我們可以初始化std::array在模板函數f 中如下:
<code class="cpp">template<typename T, int N> void f(T value) { std::array<T, N> items = repeat(value, genseq_t<N>{}); }</code>
實作細節:
範例:
考慮使用value 作為整數、n 作為範本參數的初始化:
<code class="cpp">void f(int value) { std::array<T, 5> items = repeat(value, genseq_t<5>{}); }</code>
這裡,項目將是使用重複五次的值進行初始化:{value, value, value, value, value}。
優點:
這種方法更簡潔,尤其是當 n 為大的。它還消除了手動重複該值的需要。
以上是如何在 C 中不重複地初始化非預設可構造 `std::array` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!