2017-09-08 3 views
0

私は関数内で正確なコピーを作成したいというデータ構造を持っています。たとえば、xはすでに埋め込まれており、yは完全なコピーにしたいと考えています。トリプルネストされたコンテナをコピーする

std::vector<std::list<std::pair<T,K>>> x; // T and K are template parameters 
std::vector<std::list<std::pair<T,K>>> y; 

ネストされた性質のため、正しい構文が何であるか混乱します。私はこれまでこれを持っていますが、明らかに不完全であるため、各ベクトルインデックスのリスト内のペアの最初と2番目のメンバーにアクセスする方法がわかりません。

for(int i = 0; i < xSize; i++){ 
    for(auto iter = x[i].begin(); iter != x[i].end(); iter++){ 
     // copy x into y here 
} 

誰かが私のやるべきことを考えてもらえますか?ありがとう。以下と単に

y = x; 
+0

'pair'はコンテナではないので、"三重ネストコンテナ "はありません。 –

+0

Nope。標準的な容器がそれを行います。 – NathanOliver

+0

あなたの投稿を壊さないでください。ありがとうございました! – DJMcMayhem

答えて

2

はそれを作るために、次のコードを使用ユーザー定義の型であり、ポインタを含んでいる場合は、その型の代入演算子をオーバーロードする必要があります(ルール5に従います)。 STLのコンテナは=演算子を実装していたので、残りの部分は "y = x;"を実行していたので、RestはSTLにあります。十分だろう。

+0

うーん...これは、TやKがポインタ型の場合でも動作しますか?つまり、アドレスはコピーされますが、 'x'と 'y'のポインタは同じ場所を指すことになります。 –

+0

@ vishal-wadhwa:もちろん、同じことを指すポインタの2つのコピーが必要です。それが彼らを「コピー」にするのです。 –

0

場合T及び/又はKyxに正確に等しくなるように

関連する問題