English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set get_allocator()La fonction est utilisée pour retourner une copie de l'objet allocateur, qui aide à construire le conteneur set.
allocator_type get_allocator() const; //C++ 11 Avant allocator_type get_allocator() const noexcept; //C++ 11 Après
Aucun
Retourne l'allocateur associé au conteneur set.
Invariable.
Aucun changement.
Le conteneur est consulté.
L'accès simultané aux éléments de la set est sécurisé.
Cette fonction ne lance jamais d'exception.
让我们看一个简单的实例:
#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
让我们看一个简单的实例:
#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
让我们看一个简单的示例,检查分配器是否可互换:
#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. 这些分配器是可互换的。
让我们看一个简单的实例:
#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