Ciao.
Ho una classe che contiene un vector dichiarato:
vector<CRelContainedInSpatialStructure*>* m_pGraphicsElements;

CRelContainedInSpatialStructure ha il seguente frammento di codice:
codice:
map<int, CWallStandardCaseIfc*>m_pCIfcWallsStandardCases;
//mappa windows
map<int, CWindowIfc*>m_pCIfcWindows;
//mappa dei beam
map<int, CBeamIfc*>m_pCIfcBeam;
//mappa delle column
map<int, CColumnIfc*>m_pCIfcColumn;
//mappa dei solai
map<int, CSlabIfc*>m_pCIfcSlab;
e posso averne varie di queste classi che a loro volta contengono contengono gli elementi che derivano tutti da da una classe base.
La classe base è CIfcBase e le mappe sono per windows , solai , column ecc..
come sopra.


ora, di vector<CRelContainedInSpatialStructure*>* m_pGraphicsElements; posso averne n(sono piani)che a loro volta contengono un numero generico di mappe con elementi CIfcbase.

La cosa che vorrei fare è ragruppare tutti gli elementi di tutte le mappe di tutte le classi CRelContainedInSpatialStructure in un unica classe CRelContainedInSpatialStructure nelle mappe del tipo predefinito ,sempre da mantenendo il tipo separato windows , solai , column ecc... ma in un unica CRelContainedInSpatialStructure.

è possibile risolvere con un function object?
Il modo per concatenare i vector con il backinserter l'ho trovato , ma non sono riuscito a dividere gli oggetti.

Vorrei anche associare alla classe finale un vettore che mantiene un dato , l'elevation che mi dice a che altezza è il piano , un valore per piano , quindi un array di elevation per classe finale .
Classe finale = 1.
Anche su questo vorrei dei consigli , come andare a ripescare l'elevation in un ciclo che scorre le mappe?
Ho pensato quindi ad un altro vettore ma non mi sembra una soluzione pregevole.
Grazie.