我正在尝试将一个项目插入到地图中,该地图包含另外两个地图。
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>&)'
答案 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;