Maison  >  Article  >  développement back-end  >  Comment accéder aux conteneurs sous-jacents dans les adaptateurs de conteneurs STL ?

Comment accéder aux conteneurs sous-jacents dans les adaptateurs de conteneurs STL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 23:02:30452parcourir

How to Access the Underlying Containers in STL Container Adaptors?

Accès aux conteneurs sous-jacents dans les adaptateurs de conteneurs STL

En C, les adaptateurs de conteneurs STL superposent des fonctionnalités supplémentaires aux conteneurs existants. Cependant, accéder au conteneur sous-jacent dans ces adaptateurs peut être souhaitable pour certaines opérations.

Méthode pour la pile et la file d'attente

Pour la pile et la file d'attente, il existe une méthode non standard méthode appelée _Get_container() qui peut récupérer le conteneur sous-jacent. Cependant, cette méthode ne fait pas partie de la norme et sa disponibilité peut varier selon les implémentations.

Méthode pour Priority_queue

Malheureusement, il n'existe pas de méthode standard pour accéder au fichier sous-jacent. conteneur d'une file d'attente prioritaire.

Approche alternative

Une approche alternative pour les trois adaptateurs de conteneur consiste à utiliser une classe dérivée privée avec accès au conteneur sous-jacent. Par exemple, pour une file d'attente prioritaire :

<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>

Cette approche permet d'accéder au conteneur sous-jacent via la fonction Container().

Documentation de la bibliothèque standard

La documentation officielle de la bibliothèque standard C peut être trouvée aux emplacements suivants :

  • [Référence C](https://en.cppreference.com/w/)
  • [Tutoriel STL](https://www.learncpp.com/cpp-tutorial/the-c-standard-library-48-stl/)

Clarification

L'objectif de l'utilisateur est d'imprimer le contenu d'un conteneur à une valeur à l'aide d'une fonction générique. Ceci peut être réalisé en accédant au conteneur sous-jacent, qui contient les données réelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn