std::array
연속된 메모리 공간으로써 스택에 올라간다.
힙에 올라가는 벡터보다 빠르게 동작하지만, 컴파일 타임에 사이즈를 결정해야 한다. (static array)
우선 static array 같은 경우에는 2가지가 있다.
C style 배열 선언과
std::array 스타일 선언
둘이 뭐가 다를까?
int a[3] = {1, 2, 3}; <-- 쓰지 말기!
std::array<int, 3> a = {1, 2, 3}; <-- 이렇게 쓰기!
std::array 같은 경우에는 iterator 가 제공된다.
복잡하게 size 변수 따로 저장해놓고 그렇게 반복문 돌릴 필요 없다는 것이다!
게다가 sort, min, max 등등도 모두 사용할 수 있다!
그렇다면 dynamic array 는?
런타임에 사이즈가 결정되어서 힙에 올라간다.
동적으로 생성해주는 array 도 c 스타일처럼 포인터로 new 로 할당하지말고 벡터를 사용하도록 하자
결론 : C style 대신 Modern C++ way(std) 를 채택
정적 배열 -> std::array
동적 배열 -> std::vector
배열 사이즈가 작고 (대충 1~2Mib 이하) 컴파일시간에 사이즈가 정해질 경우 array!
나머지는 그냥 vector 써버리자
'STUDY > C++' 카테고리의 다른 글
[C++] 키워드 static (0) | 2020.05.26 |
---|---|
[C++] list 를 쓸까? (0) | 2020.05.22 |
[C++] 헤더파일과 소스파일 (0) | 2020.05.17 |
[C++] 벡터 push() vs emplace() (0) | 2020.05.10 |
[C++] vector : push_back() 의 시간복잡도는? (1) | 2020.05.10 |