在C ++中实现Map的向量

Rah*_*hul 2 c++

我想在C ++中使用Map的向量。我有映射值列表,我想将其存储为向量中的映射。我的要求是这样的:1.对于N列,我有一个值映射。2.我要维护N中每个i的映射。

我试图在向量>中保持此状态。请让我知道如何使其工作。

我正在使用以下代码添加映射

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;
}
Run Code Online (Sandbox Code Playgroud)

为什么不起作用?

jus*_*tin 5

在您的示例中,您使用指针(通过new)而不是const引用或值来进行回退。您的“地图矢量”声明很好,但是插入操作会导致编译器错误。

要将地图推入向量,请使用以下形式:

std::map<std::string,int> m;
// populate m if needed
x.push_back(m);
Run Code Online (Sandbox Code Playgroud)

或简单地

x.push_back(std::map<std::string,int>());
Run Code Online (Sandbox Code Playgroud)

如果您要推空地图。

请注意,new此处不需要。


Dav*_*vid 5

贾斯汀回答了其中的大部分内容,但另一个问题是:

map< string, int> entry1 = myVect[0];
Run Code Online (Sandbox Code Playgroud)

这将从您的矢量中复制地图。您可能需要一个参考:

map< string, int>& entry1 = myVect[0];
Run Code Online (Sandbox Code Playgroud)