我想在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)
为什么不起作用?
在您的示例中,您使用指针(通过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此处不需要。
贾斯汀回答了其中的大部分内容,但另一个问题是:
map< string, int> entry1 = myVect[0];
Run Code Online (Sandbox Code Playgroud)
这将从您的矢量中复制地图。您可能需要一个参考:
map< string, int>& entry1 = myVect[0];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16603 次 |
| 最近记录: |