C++;相当于Python字典列表?

C++;相当于Python字典列表?,python,c++,list,dictionary,Python,C++,List,Dictionary,我有一个Python字典列表,其中包含有关神经网络各个层的信息。每个词典可以有任意数量的条目,包括更多的词典 layer_config = [ {'conv_layer': { 'filter_size' : 5, 'stride' : 1, 'num_filters' : 20}}, {'pool_layer': { 'poolsize' : (2,2)}}, {'fc_layer': { 'num_output' : 30}}, {'

我有一个Python字典列表,其中包含有关神经网络各个层的信息。每个词典可以有任意数量的条目,包括更多的词典

layer_config = [
 {'conv_layer': {
     'filter_size' : 5,
     'stride' : 1,
     'num_filters' : 20}},
 {'pool_layer': {
     'poolsize' : (2,2)}},
 {'fc_layer': {
     'num_output' : 30}},
 {'final_layer': {
     'num_classes' : 10}}
]

我把程序转换成C++,需要找到一种方法来类似地组织这些信息。C++嵌套映射是实现这一目标的最好方法,还是在那里存在另一种更好的替代数据结构?

< p>在C++中,使用嵌套的映射来解决这个问题,每个映射必须是同一类型的。如果您创建了一个映射映射,则子映射都必须包含相同类型的信息(如字符串和整数),而且根据键的不同,字典中似乎包含不同的信息(即,在键“poolsize”处有一对(2,2),在其他地方有整数)。C++的方法是创建一个结构或类来保存这些信息。例如,您可以为conv_层、pool_层等创建一个包含四个映射的结构。从您的示例来看,您的数据结构似乎只需要conv_层的一个映射,以及所有其他变量的一组对。如果是这种情况,您可以在数据结构中使用如下内容:

struct layer_config{
        std::map<std::string, int> conv_layer;
        std::pair<std::string, std::pair<int, int>> pool_layer;
        std::pair<std::string, int> fc_layer;
        std::pair<std::string, int> final_layer;
};
struct layer\u config{
标准::地图转换层;
std::对池_层;
std::对fc_层;
std::对最终_层;
};

可以使用类似于Python字典的C++映射和向量:

vector<map<string, map<string, int> > >neural_data;
map<string, map<string, int> >regular_data;
regular_data["conv_layer"]["filter_size"] = 5;
neural_data.push_back(regular_data);
cout << neural_data[0]["conv_layer"]["filter_size"]<< endl; 
矢量神经网络数据;
MAPU数据;
常规_数据[“转换层”][“过滤器大小”]=5;
神经数据。推回(常规数据);

无法定义“最佳”应该是什么。您必须确定贴图类型。从你的例子中还不清楚。从你的例子中甚至不清楚为什么这是一个列表——对我来说,它看起来应该只是一个字典——很难根据一个小例子推荐任何东西——这个结构是固定的还是可以有更多或更少或不同的层?在这种情况下,“最佳”应该是插入/访问数据方面的“最简单”