2017-09-08 11 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; 

인해 중첩 된 특성으로, 내가 올바른 구문이 어떻게 될지에 관해서는 혼란 스러워요. 나는 지금까지 이것을 가지고 있지만 분명히 불완전하다. 각 벡터 인덱스에서리스트 내 첫 번째와 두 번째 멤버에 액세스하는 방법을 모르겠다.

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

아니요. 표준 컨테이너가 귀하를 대신합니다. – NathanOliver

+0

게시물을 파손하지 마십시오. 고맙습니다! – DJMcMayhem

답변

2

그것을하려면 다음 코드를 사용 사용자 정의 유형이고 포인터를 포함하면 해당 유형에 대한 대입 연산자를 오버로드해야합니다 (규칙 5를 따르십시오). 나머지는 STL에 있습니다. STL의 컨테이너는 = 연산자를 구현했기 때문에, 다른 연산자는 "y = x;"를 수행하기 때문입니다. 충분할거야.

+0

음 ... T 또는 K가 포인터 유형 인 경우 여전히 작동합니까? 내 말은, 주소가 복사되지만 'x'와 'y'의 포인터가 동일한 위치를 가리키고 있음을 의미합니다. –

+0

@ vishal-wadhwa : 예, 물론, 포인터의 두 사본이 같은 것을 가리 키도록 기대합니다. 이것이 그 사람들을 "사본"으로 만드는 이유입니다. –

0

만약 T 및/또는 Kyx 정확히 같도록