std::array

CJB_ny·2022년 11월 5일
0

DataStructure & Algorithm

목록 보기
4/35
post-thumbnail

Array ❗

std::array 는 Stack메모리에 올란간다.

Stack memory에 올라간다는 것은 Compile Time에 이 array의 size를 정의를 해야한다는 것이다.

그래서 std::array를 "static array"라고도 한다.

Complie Time에 사이즈가 정해진다. == Alloaction Speed가 dynamic Array보다 빠르다.

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};

이렇게 두가지가 있다.

C-style 사용하면 안되는 이유 ❗

결론은 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를 사용해야한다.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글