我在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不会深层复制内容吗?
请帮助我
- 库马尔
答案 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的实例但是已经构建了一个发布模式构建,那么它似乎包含垃圾。那就是以这种方式调试的人工制品。