std::array 는 Stack메모리에 올란간다.
Stack memory에 올라간다는 것은 Compile Time에 이 array의 size를 정의를 해야한다는 것이다.
그래서 std::array를 "static array"라고도 한다.
Complie Time에 사이즈가 정해진다. == Alloaction Speed가 dynamic Array보다 빠르다.
C-style 선언 방법
int arr[5] = {1, 2, 3, 4, 5};
Mordern Way(c++11)
std::array<int, 5> arr = {1, 2, 3, 4, 5};
이렇게 두가지가 있다.
결론은 Mordern Way를 사용을 하면은 된다.
왜?
C-style Array는 std::array처럼 풍부한 기능을 제공하지 못한다.
예를 들어 size()도 알 수 없고
간단한 코드를 살펴보자면은
Array에 데이터를 넣는다고 가정을 할 경우
int arr[5];
for (int i = 0; i < size; ++i)
arr[i] = i;
이런식으로 size라는 변수는 알아서 또 구해준다음에 for문을 돌려야 하지만
std::array의 경우
std::array<int, 5> arr;
for (std::array<int, 5>::iterator iter = arr.begin(); iter != arr.end(); ++iter)
{}
또는
for (std::size_t idx = 0; idx < arr.size(); ++idx) {}
또는
for (auto &ele : arr) {}
이렇게 간단하게 돌릴 수 있다.
이런식으로 iterator를 통해 순회를 할 수 있고
size()도
const std::size_t length = arr.size();
이런식으로 쉽게 알 아 낼 수 있다.
또한 std에서 제공해주는
sort(), min(), max()와 같은 함수들도 사용이 가능하기 때문에
어떤면으로보나 Mordern Way 식의 std::array를 사용해야한다.