0

我在 c++ STL 容器映射中遇到问题。

class c1 {

map<int , vector<entity>>  mapobject   //where entity is a structure

c1{

    entity er;
    er.entityId = 1;
    er.nameId = 1; 

    std::vector<entity> record;
    record.push_back(er);

    mapobject.insert(std::pair<int,std::vector<entity>>(1,record));

}
}

我从上面的代码中面临的问题是,在构造函数之外,所有结构字段都包含垃圾值。类级变量映射不会深拷贝内容吗?

请帮助我

--库马尔

4

2 回答 2

1

您需要为以下内容实现复制构造函数entity

class entity
{
public:
    entity(const entity& other)
    {}
};

默认情况下,C++ 不会深度复制对象。您的代码中还存在一些语法错误:

class c1 {

map<int , vector<entity>>  mapobject;   //missing semicolon

c1 () { //missing parameter list

    entity er;
    er.entityId = 1;
    er.nameId = 1; 

    std::vector<entity> record;
    record.push_back(er);

    mapobject.insert(std::pair<int,std::vector<entity>>(1,record));

}
}; //missing semicolon
于 2012-04-23T07:11:55.453 回答
0

如果所有语法错误都得到纠正,您显示的代码会很好。您确定数据真的是“构造函数之外”的“垃圾”吗?如果您在调试器中检查 c1 的实例但已构建发布模式构建,则它似乎包含垃圾。那只是以这种方式进行调试的产物。

于 2012-04-23T07:34:35.213 回答