본문 바로가기
programing/C++

[Modern C++] std::array

by RedWiz 2016. 8. 16.

std::vector의 단점

- 생성, 소멸 비용이 큼, 사용해야 하는 벡터가 많을 수록 증가

- 확장시 메모리 재배치가 일어나서 오버헤드 증가

- 벡터 객체는 대부분 32바이트를 차지하므로 메모리에 비효율

- 동적으로 증가하거나 감소하는 경우 불필요한 벡터 간 복사가 일어남


배열의 단점

- 컴파일 타임에 크기가 결정되면 변경 불가

- 배열의 이름은 첫번째 원소의 포인터-> 묵시적 타입변화 가능



std::array

- 정해진 시간에 임의 접근 가능, 스택 메모리에 연속으로 요소를 배치

- 생성자, 소멸자, 복사 생성자, 대입 연산자 지원

- 부모 타입으로 타입 변환 금지(같은 부모 상속 이라도 서로 다른 클래스인 경우 포인터라도 다르게 취급함)

- 크기가 고정, 크기를 알 수 있음, 요소가 하나도 없어도 됨, 대입이 가능