English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Tutoriel de base

C++ Contrôle de flux

C++ Fonction

C++ Tableau & Chaîne

C++ Structure de données

C++ Classe & Objet

C++ Pointeurs

C++ Héritage

C++ Tutoriel STL

C++ Manuel de référence

C++ Utilisation et exemple de set get_allocator()

C++ Set (ensemble) STL

C ++ set get_allocator()La fonction est utilisée pour retourner une copie de l'objet allocateur, qui aide à construire le conteneur set.

Syntaxe

           allocator_type get_allocator() const; 		//C++ 11 Avant
allocator_type get_allocator() const noexcept; 	//C++ 11 Après

Paramètres

Aucun

Valeur de retour

Retourne l'allocateur associé au conteneur set.

Complexité

Invariable.

Validité des itérateurs

Aucun changement.

Concurrence des données

Le conteneur est consulté.

L'accès simultané aux éléments de la set est sécurisé.

Sécurité des exceptions

Cette fonction ne lance jamais d'exception.

实例1

让我们看一个简单的实例:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   set<double> m;   
   double *p;
   p = m.get_allocator().allocate(3);
   //double 为 8
   cout << "分配的大小 = " << sizeof(*p) * 4 << endl;
   return 0;
}

Sortie :

分配的大小 = 32

实例2

让我们看一个简单的实例:

#include <iostream>
#include <set>
using namespace std;
int main ()
{
  set<int> myset;
  int * p;
  unsigned int i;
  // 使用myset的分配器分配一个包含5个元素的数组:
  p=myset.get_allocator().allocate(5);
  // 给数组赋一些值
  for (i=0; i<5; i++) p[i]=(i+1)*10
  cout << "已分配的数组包含:";
  for (i=0; i<5; i++) cout << \' \' << p[i];
  cout << \'\n\';
  myset.get_allocator().deallocate(p,5);
  return 0;
}

Sortie :

已分配的数组包含: 10 20 30 40 50

实例3

让我们看一个简单的示例,检查分配器是否可互换:

#include <set>  
#include <iostream>  
using namespace std;
int main()
{
    
    set<int>::allocator_type s1_Alloc;
    set<int>::allocator_type s2_Alloc;
    set<double>::allocator_type s3_Alloc;
    set<int>::allocator_type s4_Alloc;
    //以下行声明对象
    //使用默认分配器。  
    set<int> s1
    set<int>::allocator_type s2
    set<double>::allocator_type s3
    s1_Alloc = s1.get_allocator();
    cout << "可以分配的整数数量"
        << endl << "在空闲内存耗尽之前: "
        << s2.max_size() << "." << endl;
    cout << "\n可以分配的双浮点数"
        << endl << "在空闲内存耗尽之前: "
        << s3.max_size() << "." << endl;
    //以下行创建一个集合s4
    //使用多重集合s1的分配器。
    set<int> s4(less<int>(), s1_Alloc);
    s4_Alloc = s4.get_allocator();
    //如果两个分配器可以互换
    //每个分配的存储空间可以是
    //被另一个释放
    if (s1_Alloc == s4_Alloc)
    {
        cout << "\n这些分配器是可互换的。" << endl;
    }
    else
    {
        cout << "\n这些分配器是不可互换的。" << endl;
    }
   return 0;
}

Sortie :

可以分配的整数数量
在空闲内存耗尽之前: 1073741823.
可以分配的双浮点数
在空闲内存耗尽之前: 536870911.
这些分配器是可互换的。

实例4

让我们看一个简单的实例:

#include <iostream>
 #include <set>
using namespace std;
int  main () 
{ 
  set < int >  c ; 
  int *  p ;
  p  =  c . get_allocator () . allocate ( 2 );
  p [ 0 ]  =  42  
  p [ 1 ]  =  43 
  cout << p[0] << 1 << endl;
  c.get_allocator().deallocate(p,  2 ); 
}

Sortie :

42, 43

C++ Set (ensemble) STL