Heim > Backend-Entwicklung > C++ > Wie kann ich in STL-Containeradaptern wie Stack, Queue und Priority_queue auf den zugrunde liegenden Container zugreifen?

Wie kann ich in STL-Containeradaptern wie Stack, Queue und Priority_queue auf den zugrunde liegenden Container zugreifen?

Patricia Arquette
Freigeben: 2024-11-02 17:58:28
Original
502 Leute haben es durchsucht

How can I access the underlying container in STL container adaptors like stack, queue, and priority_queue?

Zugriff auf den zugrunde liegenden Container in STL-Containeradaptern

Zugriff auf den zugrunde liegenden Container in STL-Containeradaptern wie Stack, Queue und Priority_queue, ist seit langem ein Thema der Neugier. Auch wenn es möglicherweise keine offizielle Standardmethode gibt, kann eine clevere Technik namens „Container-Hacking“ eingesetzt werden.

Container-Hacking

Dieser Ansatz beinhaltet die Erstellung einer Hilfsklasse abgeleitet vom jeweiligen Containeradapter. Diese abgeleitete Klasse stellt eine statische Container()-Methode bereit, die einen Verweis auf den zugrunde liegenden Container zurückgibt.

Betrachten Sie den folgenden Codeausschnitt:

<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);
}

int main() {
    priority_queue<SomeClass> pq;
    vector<SomeClass>& tasks = Container(pq);
    return 0;
}</code>
Nach dem Login kopieren

Hier die HackedQueue-Struktur, die von Priority_Queue erbt , macht die Container()-Methode verfügbar. Diese Methode gewährt Zugriff auf den zugrunde liegenden Vektor, der die Elemente in der Prioritätswarteschlange speichert.

Nicht-Standard-Ansätze

In Visual Studio 2008 stellen bestimmte Containeradapter einen Non bereit -Standard-Methode _Get_container() für den Zugriff auf den zugrunde liegenden Container. Diese Methode ist jedoch nicht Teil des offiziellen Standards und möglicherweise nicht in allen Implementierungen verfügbar.

Offizielle Dokumentation

Eine maßgebliche Dokumentation zur C-Standardbibliothek finden Sie unter finden Sie in der C-Standardbibliotheksreferenz unter https://www.cppreference.com/. Diese Website bietet umfassende Informationen zur Syntax, Semantik und Verwendung aller Standardbibliothekskomponenten.

Das obige ist der detaillierte Inhalt vonWie kann ich in STL-Containeradaptern wie Stack, Queue und Priority_queue auf den zugrunde liegenden Container zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage