Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich in STL-Containeradaptern auf die zugrunde liegenden Container zu?

Wie greife ich in STL-Containeradaptern auf die zugrunde liegenden Container zu?

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 23:02:30452Durchsuche

How to Access the Underlying Containers in STL Container Adaptors?

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&amp; Container(priority_queue<T, S, C>&amp; q) {
    struct HackedQueue : private priority_queue<T, S, C> {
        static S&amp; Container(priority_queue<T, S, C>&amp; q) {
            return q.*&amp;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:

  • [C Reference](https://en.cppreference.com/w/)
  • [STL-Tutorial](https://www.learncpp.com/cpp-tutorial/the-c-standard-library-48-stl/)

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn