Necesito crear un asignador personalizado para std :: objects (particularmente e inicialmente para std :: vector) pero eventualmente podría usar otroslo peor que puede pasar si no obedezco el dogma de asignadores personalizados sin estado?
La razón por la que necesito crear un asignador personalizado es que necesito rastrear los recursos asignados (pila &) por componentes individuales de la aplicación (esta es una característica inherente de la aplicación). Yo necesito el asignador personalizado para controlar la parte del montón de los recursos, por lo que es esencial que soy capaz de pasar a la std :: vector de algo como constructor de
trackerId idToTrackUsage;
myAlloca<int> allocator(idToTrackUsage);
vector<int> Foo(allocator);
Sin embargo, después de leer un poco he encontrado esta pequeña bomba sobre el estándar STL/C++ (ver referencias) que dice que todas las instancias de asignador de un tipo dado deben ser equivalentes (es decir que == debe volver verdadero para dos instancias) y, la mayoría de las terminales; cualquier asignador debería ser capaz de desasignar la memoria asignada por cualquier otra instancia (es decir, sin tener una manera de saber cuál podría ser esa otra instancia). En resumen, los asignadores no pueden tener estado.
Así que estoy tratando de encontrar la mejor manera de evitar esto. ¿Alguna idea ingeniosa? Realmente, REALMENTE, no quiero tener que mantener una versión personalizada de std :: vector.
EDIT: leo sobre asignadores de ámbito para C++ 0x en http://www2.research.att.com/~bs/C++0xFAQ.html#scoped-allocator pero no pude entender bien cómo esto se aplica a mi problema. Si alguien piensa C++ 0x alivia este problema, por favor comentar
Referencias:
Allocator C++ article in Wikipedia
Some random further reading courtesy of Google
Por cierto, algo relacionado, pero parece recordar que hubo cambios significativos en el modelo del asignador en C++ 0x. Alguien sabe algo acerca de esto? (¿O solo fue esto antes de que se eliminara Concepts?) – jalf
, leí sobre eso en http://www2.research.att.com/~bs/C++0xFAQ.html#scoped-allocator, pero no pude llegar muy lejos. en la comprensión de cómo esto se aplica a mi problema. (actualizará la publicación con esto) – lurscher