STL-Vektor mit Stapelspeicher verwenden
Problem:
Suche nach einem C-Vektor-ähnlichen Klasse, die Stapelspeicher anstelle des Heaps verwendet.
Lösung:
stack_container.h von Chromium bietet eine StackVector-Klasse, die perfekt zu den Anforderungen passt. Es verhält sich fast identisch mit einem gewöhnlichen Vektor, weist jedoch Daten auf dem Stapel zu.
Verwendung:
<code class="cpp">char buffer[4096];</code>
<code class="cpp">stack_vector<match_item> matches(buffer, sizeof(buffer));</code>
Alternativ kann der Puffer intern von der Klasse zugewiesen werden:
<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>
Vorteile:
Das obige ist der detaillierte Inhalt vonWie verwende ich einen stapelbasierten Vektor in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!