Partager via


set::get_allocator

Retourne une copie de l'objet allocateur utilisé pour la construction de la chaîne.

allocator_type get_allocator( ) const;

Valeur de retour

L'allocateur utilisé par le set pour gérer la mémoire, qui est le paramètre de modèle Allocator.

Pour plus d'informations à propos d'Allocator, consultez la section Notes de la rubrique set, classe.

Notes

Les allocateurs de la classe définie indique comment la classe gère le stockage. Les allocateurs par défaut fournis avec les classes de conteneurs STL sont suffisants pour la plupart des besoins de programmation. Écrire et utiliser votre propre classe d'allocateur fait partie de la rubrique C++ avancée.

Exemple

// set_get_allocator.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   set <int>::allocator_type s1_Alloc;
   set <int>::allocator_type s2_Alloc;
   set <double>::allocator_type s3_Alloc;
   set <int>::allocator_type s4_Alloc;

   // The following lines declare objects
   // that use the default allocator.
   set <int> s1;
   set <int, allocator<int> > s2;
   set <double, allocator<double> > s3;

   s1_Alloc = s1.get_allocator( );
   s2_Alloc = s2.get_allocator( );
   s3_Alloc = s3.get_allocator( );

   cout << "The number of integers that can be allocated"
        << endl << "before free memory is exhausted: "
        << s2.max_size( ) << "." << endl;

   cout << "\nThe number of doubles that can be allocated"
        << endl << "before free memory is exhausted: "
        << s3.max_size( ) <<  "." << endl;

   // The following line creates a set s4
   // with the allocator of multiset s1.
   set <int> s4( less<int>( ), s1_Alloc );

   s4_Alloc = s4.get_allocator( );

   // Two allocators are interchangeable if
   // storage allocated from each can be
   // deallocated by the other
   if( s1_Alloc == s4_Alloc )
   {
      cout << "\nThe allocators are interchangeable."
           << endl;
   }
   else
   {
      cout << "\nThe allocators are not interchangeable."
           << endl;
   }
}

Résultat de l'exemple

La sortie suivante est pour x86.

The number of integers that can be allocated
before free memory is exhausted: 1073741823.

The number of doubles that can be allocated
before free memory is exhausted: 536870911.

The allocators are interchangeable.

Configuration requise

En-tête: <jeu>

Espace de noms : std

Voir aussi

Référence

set, classe

Bibliothèque STL (Standard Template Library)