我有一个标识符为< =>结构对的静态映射,每个结构都应该包含一些数组。一切都在编译时已知。也就是说,我想在这里有这样的东西:使用不同长度的数组静态初始化结构
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