我想在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;
}
为什么不起作用?
答案 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];