STL hat deque implementation, Boost deque implementation; Beide verwenden jedoch den STL-Weg der Sequenzcontainer (dynamische Zuordnung mit Allokatoren).C++ statisch zugewiesene Doppelschlangenimplementierung
Ich suche eine zuverlässige, schnelle und statisch zugeordnete Deque-Implementierung. Das sieht in etwa so aus:
template<typename T, unsigned int S>
class StaticDeque
{
T m_elements[S];
};
Also alle Elemente statisch zuzuordnen.
Anmerkung1: Ich habe bereits eine STL-basierte Lösung (mit benutzerdefinierten Zuordnern, die statisch Daten für Vektor und Deque zuweisen), aber ich suche nach einer besseren Lösung (niedrigere Ausführungszeit).
Anmerkung2: Ich brauche statisch zugewiesenen Speicher, da ich Daten in einem vordefinierten (schnellen Zugriff) Bereich im Speicher handhabe. So wird Objekt wie folgt erklärt werden: #pragma DATA_SECTION("fast_memory")
StaticDeque<int, 10> payloads;
Also, was ist deine Frage? Grundsätzlich möchten Sie einen zyklischen Puffer mit zwei Indizes, die die aktuellen Enden der Warteschlange markieren. –
Benötigen Sie Multithread-Zugriff auf Deque? –
Sie können Ihren eigenen Ringpuffer mit Put-Front- und Put-Back-Funktionen erstellen. Ein stl Deque hat viel Aufwand, um mit Dinamically verknüpften Listen umzugehen. –