본문 바로가기
{Programing}/Data Structure

Array

by 탱타로케이 2020. 1. 28.

많은 프로그래밍 언어에서 기본적으로 지원하는 자료구조로

 

선형 자료구조의 대표격으로 리스트와 거의 비슷하다.

 

리스트와 차이점은 물리적 메모리의 주소값이다.

 

리스트는 포인터로 구성된 만큼 물리적 메모리가 선형적으로 딱 붙어있지 않는다.

 

//리스트 그림.  메모리 주소

 

배열은 물리적 메모리가 딱 붙어서 저장된다.

 

//배열 그림. 메모리 주소

 

배열에는 정적 배열, 동적 배열이 있다.

 

정적 배열 : 배열 선언시 크기가 정해지는 배열. c++ 에서는 선언후에 길이를 재조정 할 수 없다.

 

동적 배열 : 포인터를 기반으로 생성하는 배열로, 필요한 경우 재할당을 통한 길이 조정이 가능하다.

 

배열을 구성하는 단위를 '요소' 라고 하며 각 요소는 index라고 하는 고유의 번호를 가지게 된다. 실제로 저장되는 값은 아니다.

 

index는 배열의 전체 길이를 n 이라고 할 때,  0 ~ n-1 까지의 범위를 가진다. 항상 정수형으로만 접근 가능하다.

 

배열의 자료형은 제한이 없다.

 

기본 선언

 

자료형 배열명[배열 길이];

 

배열 길이는 컴파일 타임부터 상수여야만한다.

 

초기화 방법

 

요소별 초기화, 리스트 초기화, 유니폼 초기화가 있다.

 

요소별 초기화 : 배열의 개별 요소별로 각각 초기화.

 

리스트 초기화 : 배열의 선언과 동시에 초기화 하는 방법. 배열의 각 요소를 리스트처럼 작성해서 초기화.

 

유니폼 초기화 : c++ 11에서 추가된 방식으로, 리스트 초기화와 비슷한 방법.

//요소별 초기화
int arr1[3];

arr1[0] = 0;
arr1[1] = 1;
arr1[2] = 2;

//리스트 초기화
int arr2[3] = { 3, 4, 5 };

//유니폼 초기화
int arr3[3] { 6, 7, 8 };

리스트 초기화나 유니폼 초기화를 사용 할 때, 고정된 개수의 요소가 존재하기 때문에

대괄호 안에 배열 길이를 지정하지 않아도 된다.

 

 

 

'{Programing} > Data Structure' 카테고리의 다른 글

Minimum Spanning Tree, MST - 최소 신장 트리  (0) 2020.03.09
Graph  (0) 2020.03.05
Tree - Normal  (0) 2020.01.21
Queue  (0) 2020.01.20
Stack  (0) 2020.01.20

댓글