关于STL容器

时间:2012-04-23 07:08:56

标签: c++ linux

我在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));

}
}

我从上面的代码中遇到的问题是,在构造函数之外,所有strcuture字段都包含垃圾值。类级别变量 - map不会深层复制内容吗?

请帮助我

- 库马尔

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果纠正了所有语法错误,那么您显示的代码就可以了。你确定数据真的是“垃圾”“在构造函数之外”吗?如果您正在调试器中检查c1的实例但是已经构建了一个发布模式构建,那么它似乎包含垃圾。那就是以这种方式调试的人工制品。