在C++中,你可以這樣做:編譯時數據數組結構以外的數據結構?
static const char * [4] = {
"One fish",
"Two fish",
"Red fish",
"Blue fish"
};
...這給你一個很好的只讀數組的數據結構,不採取任何CPU週期在運行時進行初始化,因爲所有的數據已由編譯器爲您編寫(在可執行文件的只讀內存頁中)。
但如果我寧願使用不同的數據結構,而不是一個數組?例如,如果我想我的數據結構,必須通過一鍵快速查找,我不得不做這樣的事情:
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...]
}
...這是那麼優雅和效率較低的地圖數據結構即使在編譯時已知所有必要的數據,因此該工作在理論上可能已經完成了。
我的問題是,是否有在任何C方式++(或C++ 11),以創建一個只讀數據結構(例如地圖)其數據被完全設置在編譯時間,並因此預填充的和準備在運行時使用數組的方式?
你介意回答我的問題類似,但矢量?我的價值是雙重型 http://stackoverflow.com/questions/15471122/getting-started-with-boost-mpl-with-vector-and-push-back – woosah 2013-03-19 11:55:39