0

I am facing an issue in c++ STL container map.

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

}
}

The problem which i am facing from the above code is , outside the constructor , all the strcuture fields contains garbage values. Will the class level variable - map not deep copy the contents ?

Please help me in this

--kumar

4

2 に答える 2

1

You need to implement a copy-constructor for entity:

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

C++ does not deep-copy objects by default. There are also some syntax errors in your code:

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 に答える