在c+中实现映射向量+; 我想用C++中的地图矢量。 我有一个映射值列表,我想将其存储为向量中的映射。 我的要求是这样的: 1.对于N列,我有一个值映射。 2.我想维护N中每个I的地图

在c+中实现映射向量+; 我想用C++中的地图矢量。 我有一个映射值列表,我想将其存储为向量中的映射。 我的要求是这样的: 1.对于N列,我有一个值映射。 2.我想维护N中每个I的地图,c++,C++,我正在尝试在Vector>中维护此功能。 请让我知道如何使它工作 我使用以下代码添加映射 void fun() { vector< map < string, int> > myVect; myVect.push_back(new map< string, int> ); myVect.push_back(new map< string, int> ); map< string, int> entry1 = myVect[0];

我正在尝试在Vector>中维护此功能。 请让我知道如何使它工作

我使用以下代码添加映射

void fun() 
{
vector< map < string, int> > myVect;
myVect.push_back(new map< string, int> );
myVect.push_back(new map< string, int> );

map< string, int> entry1 = myVect[0];

entry1["ABC"] = 1;
entry1["DEF"] = 2;

map< string, int> entry2 = myVect[1];

entry1["ABC"] = 5;
entry1["RKD"] = 9;
}
void fun()
{
向量>myVect;
myVect.push_back(新地图);
myVect.push_back(新地图);
mapentry1=myVect[0];
条目1[“ABC”]=1;
条目1[“DEF”]=2;
mapentry2=myVect[1];
条目1[“ABC”]=5;
entry1[“RKD”]=9;
}

为什么不起作用?

在您的示例中,您使用的是指针(通过
new
),而不是常量引用或值。“映射向量”声明很好,但插入导致编译器错误

要将贴图推入向量,请使用以下表单:

std::map<std::string,int> m;
// populate m if needed
x.push_back(m);
std::map m;
//如果需要,填充m
x、 推回(m);
或者干脆

x.push_back(std::map<std::string,int>());
x.push_back(std::map());
如果要推送空地图


请注意,这里不需要新的。

贾斯汀回答了大部分问题,但另一个问题是:

map< string, int> entry1 = myVect[0];
mapentry1=myVect[0];
这将从矢量中复制地图。您可能需要一个参考:

map< string, int>& entry1 = myVect[0];
map&entry1=myVect[0];

到目前为止,您尝试了什么?你似乎对你想要实现的目标有着非常明确的想法,那么你的问题到底在哪里呢?例如:vectorOk,所以你似乎让它工作起来了。你有什么问题?@Rahul我已经根据你的评论更新了我的答案。你的结构声明很好,但你的插入有一个错误。你在写问题的时候看了吗?你注意到它的一些相当重要的部分丢失了吗?您是否注意到,当提出问题时,侧边栏描述了如何格式化代码?请,当你问问题时,尽量让他们可读。如果你懒得读你写的东西,你希望其他人也读吗?代码可以用反记号(`)包围,也可以缩进4个空格来标记。或者只需选择代码并单击
{}
按钮。