在C ++中将复杂值插入到地图中

时间:2011-09-27 18:35:04

标签: c++ map vector insert

我无法在此地图中插入数据。老实说,我无法弄清楚这样做的方法,但我给出的代码的最后一行是我需要修复的部分。

map<string, vector<vector<Obj*>* >* > the_map;
vector<vector<Obj*> *>*  vectors = new vector<vector<Obj*> *>;
vector<Obj*> Obj_vector;
vectors->push_back(&Obj_vector);                                                    
the_map.insert(make_pair(string("field1", &vectors)); //error on this line only

1 个答案:

答案 0 :(得分:3)

试试这个:

 the_map.insert(make_pair(string("field1"),  vectors)); 
                       //you forgot this ^  ^
                       //                   |
                       //                   & is not needed here 

顺便说一句,我怀疑在代码中使用了这么多指针,特别是这两行:

vector<Obj*> Obj_vector;  //this is local variable
vectors->push_back(&Obj_vector); //inserting address of the local variable

将局部变量的地址插入vector?

小心局部变量在超出范围后将不存在,这反过来意味着您刚刚插入到向量中的地址指向被破坏的对象,并使用它会调用未定义的行为。