PDA

Visualizza la versione completa : [C++] Numerazione elementi su importazione


giuseppe500
10-05-2011, 11:50
ciao.
Devo eseguire un importazione di dati da un formato F1 ad un formato F2.
Ho tre categorie di elementi : A / B / C e queste valgono per tutti e due i formati.
Nel formato F1 gli elementi hanno degli offset definiti :
A : offset 0
B : offset 1000000
C : offset 2000000
un elemento 2000001 un C cosi come un 2000022, un 1000200 un B e cosi ' via , nel formato F2 no , utilizza una sua numerazione in cui non compaiono comunque duplicati ,Questo(gli offset 1000000 2000000 3000000) stato creato nel formato F1 per distinguere gli elementi ma risultata una gestione infelice con cui adesso faccio i conti sempre di piu'.

vorrei gestire un metodo di numerazione quando importo pero da F2 a F1 facendo in modo che nel formato F1 non ci siano duplicati , ma che lo spazio occupato sia il minimo possibile.
Penso che sia un tipo di problema simile a quello degli allocator in stl(penso , scusate se dico baggianate).
Io pensavo di utilizzare un indice di trascodifica per passare da un formato all altro , ma in questo modo ho molti dati ridondanti.

grazie.

giuseppe500
10-05-2011, 15:11
forse piu semplice creare una struttura dati standard e cambiare l'iterator che la scorre.
ma non so bene come.

giuseppe500
11-05-2011, 12:53
Faccio un esempio per spiegarmi meglio:
devo importare 4 tipi di oggetti A,B,C,D ognuno ha un id univoco stabilito dall' offset intrinseco dell oggetto:

A offset 0
B offset 1000000
C offset 2000000
D offset 3000000

il problema che devo compattare per vari motivi gli indici.
Per fare questo basta dividere per l'offset a seconda dei tipi di oggetto e prendere il resto.
Il nuovo problema che in questo modo l'id puo essere duplicato:
as es 1000003 e 2000003, ho pensato che posso usare un multimap, ma come poi andare a pescare l'id giusto?
relativo all elemento giusto?
il multimap ordinato come la mappa ?
posso in qualche modo stabilire un ordine negli elementi duplicati facendo l'override del operatore < ?
scusate se ho fatto 3 post ma ci ho ragionato su in questo tempo e sono giunto a queste conclusioni.
grazie.

Loading