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;
};
我的要求是在一個向量中存儲500個MD類型的對象,然後我在這個向量中保存這些向量的指針。這裏的問題是如何在複製構造器MDataContainer(常量MDataContainer & mDataCont)中初始化此列表並將其分配給重載賦值運算符MDataContainer & operator =(const MDataContainer & mDataCont)。爲了擺脫代碼重複,我使用了Init函數。請給我解釋一下可以提高性能的方法。我已經在使用一些粗糙的方法。我們可以使用一些算法或其他庫(提升我沒有gr8的想法),它可以用來解決這類問題。初始化一個向量指針的列表
不要真正得到你想要做的事情。如何發佈您已有的「慢」代碼。 – ronag 2010-12-10 14:20:39
w817,你有1個向量有500個條目和一個有1個入口的入口,其中有一個指向你的向量的指針,或者你有一個向量指針和一個額外的向量指針?基本上你想要一個有效的方法來複制MDataContainer? – stefaanv 2010-12-10 14:32:33
編譯器生成的拷貝構造函數有什麼問題?在示例代碼中,編譯器將生成一個拷貝構造函數和複製賦值運算符(如果您自己沒有定義它們),它應該爲您做正確的事情。 – 2010-12-11 10:54:07