Heim > Artikel > Backend-Entwicklung > Wie greife ich in STL-Containeradaptern auf die zugrunde liegenden Container zu?
Zugriff auf zugrunde liegende Container in STL-Containeradaptern
In C legen STL-Containeradapter zusätzliche Funktionalität über vorhandene Container. Der Zugriff auf den zugrunde liegenden Container in diesen Adaptern kann jedoch für bestimmte Vorgänge wünschenswert sein.
Methode für Stack und Queue
Für Stack und Queue gibt es einen Nichtstandard Methode namens _Get_container(), die den zugrunde liegenden Container abrufen kann. Diese Methode ist jedoch nicht Teil des Standards und ihre Verfügbarkeit kann je nach Implementierung variieren.
Methode für Priority_queue
Leider gibt es keine Standardmethode für den Zugriff auf das zugrunde liegende Container einer Prioritätswarteschlange.
Alternativer Ansatz
Ein alternativer Ansatz für alle drei Containeradapter besteht darin, eine privat abgeleitete Klasse mit Zugriff auf den zugrunde liegenden Container zu verwenden. Zum Beispiel für eine Prioritätswarteschlange:
<code class="cpp">template <class T, class S, class C> S& Container(priority_queue<T, S, C>& q) { struct HackedQueue : private priority_queue<T, S, C> { static S& Container(priority_queue<T, S, C>& q) { return q.*&HackedQueue::c; } }; return HackedQueue::Container(q); }</code>
Dieser Ansatz ermöglicht den Zugriff auf den zugrunde liegenden Container über die Container()-Funktion.
Standardbibliotheksdokumentation
Offizielle Dokumentation für die C-Standardbibliothek finden Sie an folgenden Orten:
Klarstellung
Das Ziel des Benutzers besteht darin, den Inhalt eines Einwertcontainers mithilfe einer generischen Funktion zu drucken. Dies kann durch Zugriff auf den zugrunde liegenden Container erreicht werden, der die eigentlichen Daten enthält.
Das obige ist der detaillierte Inhalt vonWie greife ich in STL-Containeradaptern auf die zugrunde liegenden Container zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!