일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Build
- 단축키
- swf
- path
- Flash
- texture
- 경로
- ios
- Android
- unity
- flash builder
- Mac
- AS3
- class
- Game
- file
- smartfoxserver
- unity3D
- 배열
- 게임
- 영어
- 아이튠즈
- 태그를 입력해 주세요.
- 3d
- sdk
- builder
- XML
- iphone
- AIR
- Ane
- Today
- Total
상상 너머 그 무언가...
Array보다 성능이 좋다는 Vector를 사용해보자 본문
배열은 배열의 요소로 여러가지 자료형을 넣을 수 있는데
백터는 연속된 요소들의 자료형이 모두 같아야 한다.
연속된 요소들의 자료형이 모두 같아서 요소들의 메모리 영역도 일정하기 때문에 읽기 쓰기가 빠르다.
배열은 각 요소의 자료형에 따라 다른 메모리 크기를 차지 하기 때문에 특정 index의 요소에 해당하는 메모리 영역에 접근하기 위해서는 해당 메모리의 주소값을 찾는 연산이 추가로 들게된다.
// 백터 선언
var myVector: Vector.<String>;
// 백터 생성
myVector = new Vector.<String>;
// 백터 뒤에서 삽입
myVector.push( "액션스크립트");
myVector.push( "3.0" );
// 백터 앞에서 삽입
myVector.unshift( "플래시" );
trace( myVector.join() );
// 백터 뒤에서 추출
var popString: String = myVector.pop();
trace( "popString = ", popString );
trace( myVector.join() );
// 백터 앞에서 추출
var shiftString: String = myVector.shift();
trace( "shiftString = ", shiftString );
trace( myVector.join() );
// 백터 내부 자료형 속성에 바로 접근
var obj: Object = new Object();
obj.name = "ko";
obj.age = 33;
var objVector: Vector.<Object>;
objVector = new Vector.<Object>;
objVector.push( obj );
trace( objVector[ 0 ].age );
// 함수 리턴 자료형으로 백터 사용
function getVector(): Vector.<Object>
{
var returnVector: Vector.<Object>;
returnVector = new Vector.<Object>;
for( var i: int = 0; i < 10; i++ )
{
var obj: Object = new Object();
obj.name = "ko" + i;
obj.age = 33 + i;
returnVector.push( obj );
}
return returnVector;
}
trace( getVector()[ 3 ].age );
// 함수 파라미터로 백터 입력
function setVector( _vec: Vector.<Object> ): void
{
var vecLength: int = _vec.length;
trace( _vec[ vecLength - 1 ].name );
}
setVector( getVector() );
// 백터 선언과 동시에 생성
var directVector: Vector.<Object> = new Vector.<Object>;
directVector[ 0 ] = new Object();
directVector[ 0 ].age = 19;
trace( directVector[ 0 ].age );
// 백터 직접 입력하여 생성
var writeVector: Vector.<String>;
writeVector = new <String>[ "학교", "종이", "땡땡땡" ];
trace( writeVector[ 2 ] );
var writeVector2: Vector.<Object>;
writeVector2 = new <Object>[{ name:"클락", age:33 }, { name:"슈퍼맨", age:300 }];
trace( writeVector2[ 1 ].name );
if( writeVector2.length <= 2 )
{
writeVector2[ 2 ] = new Object();
writeVector2[ 2 ].name = "백터";
}
trace( writeVector2[ 2 ].name );
// 2차 백터
var vector2d: Vector.< Vector.<int> >;
vector2d= new <Vector.<int>>[ new <int>[0,0], new <int>[0,-1], new <int>[0,1] ];
trace( vector2d[ 1 ] );
백터 사용시 주의점은 배열과 달리 연속적으로 요소들이 존재해야한다.
즉 myVector[ 2 ] 가 없다면 myVector[ 3 ]은 생성도, 접근도 할 수 없다.
백터의 요소 범위에 속하지 않는 요소에는 접근할 수 없다. ( 배열은 null값을 가지지만 백터는 오류가 발생한다. )