class MD {
MD();
MD(const MD &obj);
MD& operator=(const MD &obj);
private:
int Name;
double sal;
};
typedef std::shared_ptr<MD> mDataPtr;
typedef std::vector<mDataPtr> mDataVecContr;
typedef std::shared_ptr<mDataVecContr> ptrMdataVecContr;
class MDataContainer{
public:
MDataContainer();
MDataContainer(const MDataContainer &mDataCont);
MDataContainer& operator=(const MDataContainer &mDataCont);
private:
mDataVecContr vecNode;
std::deque<ptrMdataVectContr> mDataQueContr;
};
Mon exigence est de stocker 500 objet de type MD dans un vecteur puis je garde un pointeur vers ces vecteurs dans deque. Le problème ici est de savoir comment initialiser cette liste dans le constructeur de copie MDataContainer (const MDataContainer & mDataCont) et l'affecter dans l'opérateur d'affectation surchargé MDataContainer & operator = (const MDataContainer & mDataCont). Pour se débarrasser de la duplication de code, j'utilise la fonction Init. SVP expliquez-moi une méthode qui peut donner de meilleures performances. Un peu rugueux que je suis déjà en train d'utiliser. Pouvons-nous avoir un algo ou une autre bibliothèque (boost je n'ai pas idée gr8) qui peut être utilisé pour résoudre ce genre de problème.initialise une deque de pointeurs vectoriels
N'obtenez pas ce que vous voulez faire. Que diriez-vous de poster le code "lent" que vous avez déjà. – ronag
w817, avez-vous 1 vecteur avec 500 entrées et une deque avec 1 entrée dans laquelle il y a un pointeur sur votre vecteur ou avez-vous une deque de pointeurs vers des vecteurs et 1 vecteur supplémentaire sur le côté? Et fondamentalement, vous voulez un moyen efficace de copier MDataContainer? – stefaanv
Quel est le problème avec le constructeur de copie généré par le compilateur? Dans l'exemple de code que vous avez donné, le compilateur va générer un constructeur de copie et un opérateur d'affectation de copie (si vous ne les définissez pas vous-même) qui devrait faire ce qu'il vous faut. –