Qt QList 배열 깊은 복사 방법 (Qt5, C++ 11 적용 가능)
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; 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 적용 가능)