Maison > développement back-end > C++ > Comment utiliser un vecteur basé sur une pile en C ?

Comment utiliser un vecteur basé sur une pile en C ?

Barbara Streisand
Libérer: 2024-11-03 09:31:02
original
370 Les gens l'ont consulté

How to Use a Stack-Based Vector in C  ?

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 :

  • Créer un tampon avec une taille spécifiée :
<code class="cpp">char buffer[4096];</code>
Copier après la connexion
  • Créez l'objet StackVector :
<code class="cpp">stack_vector<match_item> matches(buffer, sizeof(buffer));</code>
Copier après la connexion

Alternativement, le tampon peut être alloué en interne par la classe :

<code class="cpp">stack_vector<match_item, 256> matches;</code>
Copier après la connexion
  • Personnalisez la taille de l'allocateur :
<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>
Copier après la connexion
  • Instanciez l'allocateur et construisez le vecteur :
<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>
Copier après la connexion
  • Réservez de la mémoire pour le vecteur :
<code class="cpp">match_list.reserve(comp_list_alloc_size);</code>
Copier après la connexion

Avantages :

  • Remplacement immédiat des vecteurs STL
  • Alloue des données sur la pile, améliorant ainsi efficacité
  • Taille de l'allocateur personnalisable
  • Option de repli automatique vers l'allocation du tas en cas de débordement

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal