」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > C ++元圖可以用於動態創建編譯時靜態陣列嗎?

C ++元圖可以用於動態創建編譯時靜態陣列嗎?

發佈於2025-02-06
瀏覽:432

Can C   Metaprogramming Be Used for Dynamically Creating Compile-Time Static Arrays? 
在C

問題中以編譯時間創建靜態數組的問題介紹

傳統上,可以在Compile Time中定義靜態數組,大小數組。但是,在某些情況下,希望在編譯時以編程方式分配值。本文探討了元編程技術,以實現靜態數組的這種動態創建。

問題1:使用C 0x功能編程分配值

問題2:選擇性值分配

可以在編譯時選擇性分配值,可以使用variadic模板和元函數的組合。 metafunc模板用作基於其索引的一個值序列的參數包。然後,Generate_Array模板可以使用生成的值創建所需大小的數組。

template struct_t index> struct metafunc {enum {num {value = index 1}; }; 模板類f> struct generate_array { typedef typename generate_array_impl ::結果結果; }; 模板 f類,unsigned ... args> struct generate_array_impl { typedef typename generate_array_impl ::結果結果; }; 模板

Usage Example

void test() { const size_t count = 5; typedef generate_array ::結果a; for(size_t i = 0; i 此示例定義了一個大小5的靜態數組,使用metafunc metafunction在編譯時間分配的值{1,2,2,3,4,5}。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3