Quando trasformo il codice da C a C++, talvolta mi imbatto in costrutti di linguaggio C, ma compatibili con C++. Di solito voglio trasformare il codice nel modo meno intrusivo. Ma ho un caso in cui trovo che molto difficile:C++: equivalente agli array inizializzati in modo incompleto in C?
In C si può dichiarare un array e inizializzazione ... beh ... parti di esso utilizzando "designatori", il resto è azzerato (Edit: ho scritto "lasciato alla casualità" qui, in primo luogo):
int data[7] = {
[2] = 7,
[4] = 9,
};
Questo non è valido C++ - codice, anche se (per fortuna). Quindi dovrò usare una strategia diversa.
Mentre posso vedere un modo non intrusivo in C++ 11:
static const map<int,int> data = { {2,7}, {4,9} };
cosa devo fare quando C++ 11-caratteristiche non sono ancora disponibili?
- È possibile aggirare l'inizializzazione del runtime ?
- C'è un modo per inizializzare un tipo simile di mappatura in modo "letterale"?
- Che cos'è meno intrusivo per il codice che utilizza
data
?
Quindi hai intenzione di usare solo gli indici '2' e' 4', o hai ancora bisogno degli altri indici? –
Di solito questi sono mappaggi "statici cost", mappando i valori di enumerazione alle stringhe leggibili dall'uomo. Non vengono modificati in alcun modo in fase di esecuzione. – towi
Intendevi "pedante"? o 'dependant'? –