Utilisation d'un vecteur STL avec Stack Storage
Problème :
Trouver un vecteur de type C classe qui utilise le stockage de pile au lieu du tas.
Solution :
stack_container.h de Chromium fournit une classe StackVector qui répond parfaitement aux exigences. Il se comporte presque de la même manière qu'un vecteur ordinaire mais alloue des données sur la pile.
Utilisation :
<code class="cpp">char buffer[4096];</code>
<code class="cpp">stack_vector<match_item> matches(buffer, sizeof(buffer));</code>
Alternativement, le tampon peut être alloué en interne par la classe :
<code class="cpp">stack_vector<match_item, 256> matches;</code>
<code class="cpp">typedef std::pair<const char *, const char *> comp_list_item; static const size_t comp_list_alloc_size = 128; typedef StackAllocator<comp_list_item, comp_list_alloc_size> comp_list_alloc_type;</code>
<code class="cpp">comp_list_alloc_type::Source match_list_buffer; comp_list_alloc_type match_list_alloc(&match_list_buffer); comp_list_type match_list(match_list_alloc);</code>
<code class="cpp">match_list.reserve(comp_list_alloc_size);</code>
Avantages :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!