Los dos no son contradictorios. Los asignadores son un PolicyPattern o StrategyPattern utilizado por los adaptadores de contenedor de las bibliotecas STL para asignar trozos de memoria para su uso con objetos.
Estos asignadores optimizar con frecuencia asignación de memoria al permitir * gamas de elementos que se asignarán a la vez, y luego inicializan usando una colocación nueva * artículos que se selecciona entre montones secundarias, especializados dependiendo de bloque
Una forma u otra, el resultado final será (casi siempre) ser que los objetos se asignan con la nueva (colocación o por defecto)
otro ejemplo vivo sería cómo por ejemplo, impulsar la biblioteca implementa smartpointers. Debido a que los smartpointers son muy pequeños (con poca sobrecarga), la sobrecarga de asignación puede convertirse en una carga. No tendría sentido para la aplicación para definir un asignador especializado para hacer las asignaciones, por lo que uno puede tener std :: set eficiente <> de smartpointers, std :: mapa < ..., SmartPointer> etc.
(Ahora Estoy casi seguro de que el impulso realmente optimiza el almacenamiento para la mayoría de los smartpointers evitando cualquier virtual, por lo tanto, el vft, haciendo de la clase una estructura POD, con solo el puntero sin formato como almacenamiento; algunos ejemplos no se aplicarán. Pero, de nuevo, extrapolar a otros tipos de smartpointer (recuento de smartpointers, punteros a funciones de miembro, punteros a funciones de miembro con referencia de instancia, etc.))
+1 para el "enfoque de STL para asignadores no es óptimo" más el enlace a "Hacia un mejor modelo de adjudicador" :) –
¡El enlace que proporcionó es muy útil! –