将项目插入地图,其中包含2个地图

时间:2011-05-17 23:45:16

标签: c++

我正在尝试将一个项目插入到地图中,该地图包含另外两个地图。

map< map<int, int> , map<int, int> > GC;

map<int, int> A;
A.insert(pair<int,int>(1,1));
map<int, int>:: iterator p1 = A.begin();

map<int, int> B;
B.insert(pair<int,int>(2,3));
map<int, int>:: iterator p2 = B.begin();

GC.insert( pair< map<int,int>, map<int,int> > (*p1, *p2) );

好吧,假设它不起作用。

怎么做?

修改
它给出了以下错误:

  

E:\ CB \ test.cpp | 20 |错误:没有匹配函数来调用'std::pair<std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >, std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > > >::pair(std::pair<const int, int>&, std::pair<const int, int>&)'

3 个答案:

答案 0 :(得分:1)

我不确定这里要做什么......

您的密钥和值必须是地图对象才能工作...... 在这种情况下,只有可能性

GC.insert( pair< map<int,int>, map<int,int> > (A,B) );

答案 1 :(得分:0)

我认为你真的想要一个带有Edge对象列表/向量的Node类。每个Edge对象都包含边权重和指向边连接到的Node的指针。

创建图表可能有比我描述的更好的方法,但这应该让你思考正确的方向。

答案 2 :(得分:0)

map<keyValue, VertexIndexValue>, map<(EdgeWeight1,VertexIndexValue1), (EdgeWeight2,VertexIndexValue2)......> 

我认为您想要的是使用结构作为地图的第二个元素。它让你有机会在地图中持有任何你想要的东西而不会让人感到困惑。

struct sMapValue
{
   int mVertIndex;
   map<int, int>  mVertEdgeMap;
};

map< int, sMapValue> GC;