我有一個標識符爲< =>結構對的靜態映射,每個結構都應該包含一些數組。一切都在編譯時已知。也就是說,我想在這裏有這樣的東西:使用不同長度的數組靜態初始化結構
ID1 => name: someString
flagCount: 3
flags: [1, 5, 10]
靜態創建(如果可能)。當然,像聲明:
struct Info
{
const char* name;
int flagCount;
int flags[];
};
將是理想的,只要我能初始化它像...
Info infos [] = { ... };
這是不可能的,由於不同長度陣列(除了我錯過了一些東西)。另外,我雖然(AB)使用boost::assign
爲此,但我想知道是否有一個建議的解決方案。如果我只能將信息結構存儲到數組中,並將其映射到別處,我很好。
編輯:關於當前解決方案的說明。目前,我有:
struct Info
{
Info (const std::vector<int>& flags) : flags {}
std::vector<int> flags;
};
我用:(?基於模板)
const std::map<ID, Info> map = boost::assign::map_list_of
("ID1", Info (boost::assign::list_of (1)(2)(3));
其中的作品,我只是好奇,是否有一個簡單的解決方案。
您是否知道編譯時數組中每個Info對象的flags數組的長度? – dirkgently 2009-03-01 11:41:10
是的。但是,對於不同的信息它是不同的。 – Anteru 2009-03-01 13:14:11