<aside> 📌 배열 = 같은종류의 데이터의 모음

</aside>

배열의 인덱스접근 = O(1)

배열은 캐시지역성을 가짐

<aside> 📌 캐시지역성 = 배열이 인덱스접근을 하면 근방의 원소들도 캐시로 가져옴 → 반복문에서 배열을 사용할 시 매우 효율적임

</aside>

배열은 STACK에 할당되는데 보통 1MB정도가 할당됨

배열 선언시 초기화하지 않을 경우 garbage value가 들어가게 됨 → 빈중괄호로 초기화하면 0으로 맞춰짐

sizeof()함수는 메모리*인덱스를 반환

int s = 5;
float ans = (float)s / 3.0;
//위와같이 타입 캐스팅을 해줄 수 있음.

C 스타일 2중차원 배열에서 행열을 만들 시에

mat[0][5] 이라면 0열 5행의 값임

스크린샷 2022-06-30 오후 3.20.39.png

메모리 저장 순서는 위와 같음

<aside> ❗ N차원 배열의 탐색 시에 N중 루프를 row→column순이 아닌 column→row 순으로 탐색을 하게 되면 캐시지역성을 활용할 수 없게 됨

</aside>


C스타일 배열을 C++에서 사용하기 위한 std::array

[1] C++에서 C의 배열을 대체하는 고정크기 컨테이너임

[2] C 스타일 배열처럼 []오버로딩 연산을 지원

[3] array클래스에서 제공하는 std::size()함수를 통해 배열크기를 정확히 알 수 있음

[4] STL의 클래스이기 때문에 반복자를 지원