In C++ können Sie dies tun:Kompilierzeitpopulation von anderen Datenstrukturen als Arrays?
static const char * [4] = {
"One fish",
"Two fish",
"Red fish",
"Blue fish"
};
... und das gibt Ihnen eine schöne Nur-Lese-Array-Daten-Struktur, die keine CPU-Zyklen dauert zur Laufzeit initialisieren, da alle Daten, wurde für Sie (in den schreibgeschützten Speicherseiten der ausführbaren Datei) vom Compiler ausgelegt.
Aber was wäre, wenn ich lieber eine andere Datenstruktur als ein Array verwenden würde? Zum Beispiel, wenn ich meine Datenstruktur haben schnelle Lookups über einen Schlüssel wollte, würde ich so etwas zu tun haben:
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...]
}
... die weniger elegant ist und weniger effizient als die Datenstruktur Karte ist während der Laufzeit zur Verfügung gestellt wurde, obwohl alle notwendigen Daten zur Kompilierungszeit bekannt waren und daher die Arbeit (theoretisch) hätte durchgeführt werden können.
Meine Frage ist, gibt es eine Möglichkeit in C++ (oder C++ 11) eine schreibgeschützte Datenstruktur (z. B. eine Karte) zu erstellen, deren Daten vollständig zur Kompilierungszeit eingerichtet und somit vorbelegt und bereit zur Laufzeit, so wie ein Array sein kann?
Stört es dich, meine Frage ähnlich aber Vektor zu beantworten? Meine Werte sind vom Typ double http://stackoverflow.com/questions/15471122/getting-started-with-boost-mpl-with-vector-and-push-back – woosah