Collection Type은 기본적으로 Cow(Copy on Write)
방식으로 구현되어 있다.
CoW는 참조를 통해 불필요한 복사를 줄이고, 수정(modification)이 발생할 때만 복사를 하는 방식이다.
예를 들면, 100000개의 Element를 가지는 배열을 A와 그 배열을 복사한 B(Copy)가 있을때,
복사한 B배열은 실제 쓰기(on Write)가 일어나기 전까지 A배열과 같은 주소값을 가지고 있다가 쓰기가 일어나면 새로운 주소값을 할당받는다.
같이 고민해보기
https://github.com/apple/swift/blob/main/docs/Arrays.rst
append
및 removeLast
의 경우 stack, queue의 역할을 대체하므로 C배열과 같은 O(1)의 속도를 보장합니다.
동적 추가 시, 배열의 크기가 할당되어 메모리에 올라간 상태여야 합니다.
//ex)
let arr = [Int]()
arr.append(4) // error!
Dictionary의 구체적인 동작과정은 이글을 참조하세요.
https://oaksong.github.io/2018/01/06/copy-on-write/
https://zeddios.tistory.com/116?category=685736
https://zeddios.tistory.com/114?category=685736