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;
};
私の要件は、MD型の500オブジェクトをベクトルに格納し、これらのベクトルへのポインタを両端キューに保持しています。ここでの問題は、コピーコンストラクタMDataContainer(constのMDataContainer & mDataCont)にこのリストを初期化し、オーバーロード代入演算子MDataContainer &演算子=(constのMDataContainer & mDataCont)でそれを割り当てる方法です。コードの重複を取り除くために、Init関数を使用しています。 Plsは私により良いパフォーマンスを与える方法を説明します。私はすでに使用しているいくつかの荒い方法。この種の問題を解決するために使用できるいくつかのアルゴまたはその他のライブラリ(私はgr8のアイデアを持っていない)を持てますか?ベクトルポインタの両端キューを初期化する
あなたがしたいことを得ることはできません。あなたがすでに持っている "遅い"コードを投稿するのはどうですか? – ronag
w817、1つのベクトルに500のエントリがあり、1つのエントリの両端キューにベクトルへのポインタがありますか、またはベクトルへのポインタと1つの余分なベクトルがありますか?そして、基本的にMDataContainerを効率的にコピーしたいのですか? – stefaanv
コンパイラが生成したコピーコンストラクタで何が問題になっていますか?コード例では、コンパイラはコピーコンストラクタとコピー代入演算子を生成します(自分で定義していない場合)。これは適切な処理を行います。 –