Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membina Pemula Tatasusunan Statik daripada Tuples atau Variadic Templates dalam C?
Mencipta Pemula Tatasusunan daripada Parameter Templat Tuple atau Variadic
Apabila berurusan dengan susun atur memori berterusan yang perlu dibenamkan dalam kod program , terdapat keperluan untuk mewakili perihalan reka letak secara statik. Ini melibatkan pengikatan ID tertentu pada reka letak, pengiraan offset pada masa penyusunan dan mencipta pemula tatasusunan yang boleh diulang pada masa jalan tanpa sekatan std::get(std::tuple).
Pendekatan Templat Variadik
Untuk mendayakan pengumpulan masa kompilasi dan penciptaan jujukan, pertimbangkan untuk menggunakan templat variadik. Setiap entri boleh terdiri daripada pengecam dan sama ada saiz atau jenis elemen tertentu. Himpunan peringkat atas entri ditakrifkan sebagai templat "Reka letak" dan setiap entri diwakili oleh templat "Entri".
Contoh Penggunaan
<code class="cpp">template<std::size_t offset, typename Key, typename... Entries> struct LayoutHelper { typedef std::tuple<> type; }; template<typename Key, typename... Entries> struct Layout:LayoutHelper<0, Key, Entries...>;</code>
<code class="cpp">template<typename Key, Key identifier, typename Data> struct Entry {};</code>
Untuk menggunakan pendekatan ini:
<code class="cpp">Layout< FooEnum, Entry< FooEnum, eFoo, char[10]>, Entry< FooEnum, eFoo2, double> > layout;</code>
Selepas melaksanakan templat prepend untuk menambah elemen ke hadapan tuple, Layout
Pertimbangan Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Membina Pemula Tatasusunan Statik daripada Tuples atau Variadic Templates dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!