En STL, los contenedores pueden cambiar de tamaño dinámicamente. Allocator es un objeto que es responsable de la asignación/desasignación de memoria dinámica. get_allocator() se usa para asignar fragmentos de memoria. Devuelve una copia del objeto asignador asociado con el contenedor. Se define en bibliotecas de vectores , mapas , listas y conjuntos .
Sintaxis:
allocator_type get_allocator() const;
Parámetro utilizado:
esta función miembro no necesita pasar ningún parámetro.Tipo de Retorno:
Devuelve una copia del objeto asignador asociado al vector.Errores y excepciones:
nunca arroja excepciones, por lo que no necesitamos ningún intento de captura que lo rodee.Tiempo-Complejidad:
Constante O(1).
Los siguientes programas ilustran el funcionamiento de la función.
1. std::vector::get_allocator() Devuelve una copia del objeto asignador asociado con el vector .
// C++ program to show working // of get_allocator function #include <iostream> #include <vector> using namespace std; // Function for allocating char* Allocate(vector<char> arr, int size) { // allocate space for size(s) elements return arr.get_allocator().allocate(size); } void Construct(vector<char> arr, char* point, int size) { for (int iter = 0; iter < size; ++iter) // construct values in-place on the array: arr.get_allocator().construct(&point[iter], iter + 97); } // Function for Deallocating void deAllocate(vector<char> arr, char* point, int size) { for (int iter = 0; iter < size; ++iter) arr.get_allocator().destroy(&point[iter]); // free allocated memory arr.get_allocator().deallocate(point, size); } // Driver code int main() { vector<char> array; char* pointer; int size = 8; pointer = Allocate(array, size); Construct(array, pointer, size); cout << "Array elements: "; for (int iter = 0; iter < size; ++iter) cout << pointer[iter] << " "; deAllocate(array, pointer, size); return 0; }
Array elements: a b c d e f g h
2. std::list::get_allocator() Devuelve una copia del objeto asignador asociado con la lista .
// C++ program to show working // of get_allocator function #include <iostream> #include <list> using namespace std; // Function for allocating char* Allocate(list<char> arr, int size) { // allocate space for size(s) elements return arr.get_allocator().allocate(size); } void Construct(list<char> arr, char* point, int size) { for (int iter = 0; iter < size; ++iter) // construct values in-place on the array: arr.get_allocator().construct(&point[iter], iter + 97); } // Function for Deallocating void deAllocate(list<char> arr, char* point, int size) { for (int iter = 0; iter < size; ++iter) arr.get_allocator().destroy(&point[iter]); // free allocated memory arr.get_allocator().deallocate(point, size); } // Driver code int main() { list<char> array; char* pointer; int size = 8; pointer = Allocate(array, size); Construct(array, pointer, size); cout << "Array elements: "; for (int iter = 0; iter < size; ++iter) cout << pointer[iter] << " "; deAllocate(array, pointer, size); return 0; }
Array elements: a b c d e f g h
3. std::set::get_allocator() Devuelve una copia del objeto asignador asociado con el conjunto .
// C++ program to show working // of get_allocator function #include <iostream> #include <set> using namespace std; // Function for allocating char* Allocate(set<char> arr, int size) { // allocate space for size(s) elements return arr.get_allocator().allocate(size); } void Construct(set<char> arr, char* point, int size) { for (int iter = 0; iter < size; ++iter) // construct values in-place on the array: arr.get_allocator().construct(&point[iter], iter + 97); } // Function for Deallocating void deAllocate(set<char> arr, char* point, int size) { for (int iter = 0; iter < size; ++iter) arr.get_allocator().destroy(&point[iter]); // free allocated memory arr.get_allocator().deallocate(point, size); } // Driver code int main() { set<char> array; char* pointer; int size = 8; pointer = Allocate(array, size); Construct(array, pointer, size); cout << "Array elements: "; for (int iter = 0; iter < size; ++iter) cout << pointer[iter] << " "; deAllocate(array, pointer, size); return 0; }
Array elements: a b c d e f g h
Referencias: http://www.cplusplus.com/reference/vector/vector/get_allocator/
Publicación traducida automáticamente
Artículo escrito por Dibyendu Roy Chaudhuri y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA