In C++, si può fare questo:Popolazione di compilazione di strutture dati diverse dagli array?
static const char * [4] = {
"One fish",
"Two fish",
"Red fish",
"Blue fish"
};
... e che ti dà una bella serie di dati-struttura di sola lettura che non prende alcun cicli di CPU per inizializzare in fase di esecuzione, in quanto tutti i dati è stato preparato per te (nelle pagine di memoria di sola lettura dell'eseguibile) dal compilatore.
Ma cosa succede se preferirei utilizzare una struttura dati diversa anziché una matrice? Per esempio, se ho voluto che la mia struttura di dati per avere ricerche veloci tramite una chiave, avrei dovuto fare qualcosa di simile:
static std::map<int, const char *> map;
int main(int, char **)
{
map.insert(555, "One fish");
map.insert(666, "Two fish");
map.insert(451, "Red fish");
map.insert(626, "Blue fish");
[... rest of program here...]
}
... che è meno elegante e meno efficienti come la struttura della mappa dei dati è si popolava in fase di esecuzione, anche se tutti i dati necessari erano noti al momento della compilazione e quindi quel lavoro avrebbe potuto (teoricamente) essere fatto in quel momento.
La mia domanda è, c'è un modo in C++ (o C++ 11) per creare una struttura di dati di sola lettura (come una mappa) i cui dati sono interamente impostati in fase di compilazione e quindi pre-compilati e pronto all'uso in fase di esecuzione, come può essere un array?
Ti dispiace rispondere alla mia domanda in modo simile ma vettoriale? I miei valori sono di tipo double http://stackoverflow.com/questions/15471122/getting-started-with-boost-mpl-with-vector-and-push-back – woosah