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

+ Recent posts