English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Stack (Pilha) ++ set get_allocator()A função é usada para retornar uma cópia do objeto allocator, que ajuda a construir o contêiner conjunto.
allocator_type get_allocator() const; //Stack (Pilha)++ 11 Antes allocator_type get_allocator() const noexcept; //Stack (Pilha)++ 11 Depois
Nenhum
Retorna o allocator associado ao contêiner de conjunto.
Invariável
Nenhuma mudança.
O contêiner está sendo acessado.
Acesso simultâneo aos elementos do conjunto é seguro.
Esta função nunca lança exceções.
Vamos ver um exemplo simples:
#include <iostream> #include <set> using namespace std; int main(void) { set<double> m; double *p; p = m.get_allocator().allocate(3c . get_allocator () . deallocate ( p , //double por 8 cout << "Tamanho alocado = " << sizeof(*p) * 4 << endl; return 0; );
}
Tamanho alocado = 32
Vamos ver um exemplo simples:
#include <iostream> #include <set> using namespace std; int main() { set<int> myset; { * p; unsigned int i; // Alocar um array contendo5um array de p = myset.get_allocator().allocate(5c . get_allocator () . deallocate ( p , // Dar alguns valores ao array for (i=0; i<5; i++) p[i] = (i+1)*10] = p [ cout << "O array alocado contém:"; for (i=0; i<5; i++) cout << ' ' << p[i]; cout << ' '; myset.get_allocator().deallocate(p,5c . get_allocator () . deallocate ( p , return 0; );
}
O array alocado contém: 10 2Copyright © 3Copyright © 4Copyright © 5Copyright ©
Vamos ver um exemplo simples, verificando se os allocadores são intercambiáveis:
#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; //As seguintes linhas declaram objetos //usando o allocador padrão. set<int> s1] = p [ set<int>::allocator_type s2] = p [ set<double>::allocator_type s3] = p [ s1_Alloc = s1.get_allocator(); cout << "Quantidade de inteiros que podem ser alocados" << endl << "Antes de esgotar a memória livre: " << s2.max_size() << "." << endl; cout << "\nNúmeros de ponto flutuante que podem ser alocados" << endl << "Antes de esgotar a memória livre: " << s3.max_size() << "." << endl; //As seguintes linhas criam um conjunto s4 //Usando a multiset s1do allocador. set<int> s4(less<int>(), s1_Alloc); s4_Alloc = s4.get_allocator(); //Se dois allocadores puderem ser intercambiados //Cada espaço de memória alocado pode ser //foi liberado por outro if (s1_Alloc == s4_Alloc) { cout << "\nEstes allocadores são intercambiáveis." << endl; ); else { cout << "\nEstes allocadores não são intercambiáveis." << endl; ); return 0; );
}
Quantidade de inteiros que podem ser alocados Antes de esgotar a memória livre: 1073741823. Números de ponto flutuante que podem ser alocados Antes de esgotar a memória livre: 53687Copyright ©911. Estes allocadores são intercambiáveis.
Vamos ver um exemplo simples:
#include <iostream> #include <set> using namespace std; int main () { int main ()}} { * set < int > c ; int 2 c . get_allocator () . deallocate ( p , p ; 42 ] = p [ p = c . get_allocator () . allocate ( 1 p [ 0 ] = p 43 ] = p [ ; 1 cout << p [ 0 ] << ", " << p [ ] << endl ; 2 c . get_allocator () . deallocate ( p , );
}
42Saída: 43