在c ++中实现Map的向量

时间:2011-10-18 08:36:46

标签: c++

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

我正在尝试在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;
}

为什么不起作用?

2 个答案:

答案 0 :(得分:4)

在您的示例中,您使用指针(通过new)而不是通过const引用或值推回。你的'map of vector'声明很好,但是插入会导致编译错误。

要将地图推入矢量,请使用以下表格:

std::map<std::string,int> m;
// populate m if needed
x.push_back(m);

或只是

x.push_back(std::map<std::string,int>());

如果你想推空地图。

请注意,此处不需要new

答案 1 :(得分:1)

Justin回答了很大一部分,但另一个问题是:

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

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

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