PDA

Visualizza la versione completa : [c++]concatenazione vectors stl


giuseppe500
12-04-2010, 18:24
Ciao.
Ho una classe che contiene un vector dichiarato:
vector<CRelContainedInSpatialStructure*>* m_pGraphicsElements;

CRelContainedInSpatialStructure ha il seguente frammento di 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.

Loading