블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2797)
Unity3D (853)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

cli::array<t>^<t>

Programming/C++/CLI / 2011. 3. 24. 15:50

 C++/CLI 에서 배열은 하나의 Data type 이다어떠한 배열이든 cli::array 클래스의 인스턴스(참조 타입)이다.

메모리는 동적으로 CLR(Common Language Runtime) Heap 에 생성된다메모리의 크기는 배열 생성시에 결정되며 그 이후에는 크기를 변경할 수 없다.

 

 

1. 만약 배열의 Data Type  Value Type 이라면 배열 생성 시 Boxing 되어 들어간다.

(Boxing 과정은 프로그램의 Performance 를 하향 시킨다.)

2. 배열의 인덱스(첨자 0 부터 시작한다.

3. 배열은 배열의 요소에 접근 및 다루기 위한 메소드를 가지고 있다.

4. 배열에서의 모든 동작은 체크된다배열의 범위를 넘어가는 동작에 대하여 “Index out of range”

예외가 발생하게 된다.

5. 배열은 CLR Heap 에 할당된다. Value Type 의 배열은 Heap  Boxing 된 다음 그 참조를 리턴받는다.

 

 



■ 사용 예



int 타입의 배열 a 를 선언 및 생성 하였다. 또한 배열의 개수를 명시적으로 선언하지 않고, 초기화 값을 선언하였으므로 묵시적으로 1, 2, 3 의 값을 갖는 크기 3의 배열이 생성된다.




위 예는 명시적으로 배열의 크기를 100으로 선언하였다. 따라서 100 개의 요소를 갖는 배열이다. 또한 1,2,3 으로 초기값을 적어주었으므로 배열의 처음 3번째 요소까지 초기화가 이루어 진다.




cli::array 클래스에는 배열을 조작하기 위한  메소드와 프로퍼티가 정의되어 있다. Length, index 등 이 있으며 foreach 문에서 사용할 수 있다.


 



위의 예는 다차원 배열의 선언 및 사용 예이다. array<type, 차원>^ 과 같이 사용한다. 위의 예는 3차원 배열로서 4*5*2 크기를 갖는 배열이다.




String 클래스의 배열 역시 사용할 수 있다. 인상적인 것은 <> 안에 String^ 이 들어간다.




위의 예는 String 클래스의 배열을 생성 후 루프를 돌면서 초기화 하는 예제 이다.





■ 가변인자 사용 예

C++ 과 마찬가지로 가변 인자 를 지원한다. 다음은 사용 예 이다.





※ 만약 배열에 요소를 추가 하거나 삭제 하려 한다면 ArrayList 클래스를 참조한다.


 



■ 참조

1. cli::array (MSDN)
2. C++/CLI Primer - Enter the World of .NET Power Programming (CodeProject)
3. Quick C++/CLI - Learn C++/CLI in less than 10 minutes (CodeProject)


반응형
Posted by blueasa
, |