본문 바로가기
C++ 200제/코딩 IT 정보

Qt QList 배열 깊은 복사 방법 (Qt5, C++ 11 적용 가능)

by vicddory 2019. 1. 17.

Qt QList 배열 깊은 복사 방법 (Qt5, C++ 11 적용 가능)



Qt QList 배열 깊은 복사 방법 (Qt5, C++ 적용)


Qt의 복사 매커니즘은 기본적으로 암시적인 Deep Copy(깊은 복사)로 작동합니다.


QList<int> a;
a.append(1);
a.append(2);
cs


두 개의 값이 복사된 QList를 확인할 수 있습니다.


QList<int> b = a;
// a = 1, 2
// b = 1, 2
cs


QList a와 b는 똑같습니다. b는 a의 데이터를 공유하며, 복사하지 않기에 작업 속도는 매우 빠릅니다.


b.append(3);
// a = 1, 2
// b = 1, 2, 3
cs


위와 의미는 똑같지만 다른 예제는 아래와 같습니다.


QList<int> a;
<< 1 << 2 << 3;
// a = 1, 2, 3
 
QList<int> b = a;
// a = 1, 2, 3; b = 1, 2, 3
 
b[0= 7;
// a = 1, 2, 3; b = 7, 2, 3
cs


list b의 인덱스 일부를 변경하면 암시적으로 깊은 복사가 이뤄집니다.


주소 참조를 통해 깊은 복사를 하려면 아래와 같이 구성합니다.


class Test {
    QList<int> _m;
 
public:
    Test(const QList<int> &m) : _m(m) {
 
    }    
}
cs


Qt QList 배열 깊은 복사 방법 (Qt5, C++ 11 적용 가능)

댓글