我有这样的地图:
map<prmNode,vector<prmEdge>,prmNodeComparator> nodo2archi;
我需要有一张相同的地图副本。快速的方法是如何做到这一点的? 我试过这个:
map<prmNode,vector<prmEdge>,prmNodeComparator> copiamap( nodo2archi );
但它不起作用。 copiamap是空的。 非常感谢你
答案 0 :(得分:7)
使用地图的复制构造函数:
map<prmNode,vector<prmEdge> > nodo2archi;
map<prmNode,vector<prmEdge> > acopy( nodo2archi ) ;
此代码复制地图,为每个代码打印相同的尺寸(1)。
#include <map>
#include <iostream>
using namespace std;
typedef map <int, int> MapType;
int main() {
MapType m1;
m1.insert( make_pair( 1, 1 ) );
cout << m1.size() << endl;
MapType m2( m1 );
cout << m2.size() << endl;
}
如果您自己的代码确实没有复制,那么我怀疑复制构造函数中的错误或所包含类型的比较函数会以某种方式搞砸内存。
答案 1 :(得分:1)
如果代替:
,它是否有效 map<prmNode,vector<prmEdge>,prmNodeComparator> copiamap( nodo2archi );
您使用
map<prmNode,vector<prmEdge>,prmNodeComparator> copiamap = nodo2archi;
我同意你在某处丢失某些东西的其他人,但你能测试一下吗?