동적배열 사용하기
C++에서 배열을 정의 할때 정적으로
int mar[4]; 와 같이 사용하는 경우가 많다,
이렇게 사용하게 되면 많은 불편함이 따른다 Buff의 크기를 미리 정해 두고 버프의 크기 만큼
연산을 반복 수행하거가,실제 유효한 Data가 탑재된 메모리의 내용을 파악하는 플래그를 두는 등 번거로운 작업 따른다.
이럴때 CArray를 사용하면 많은 편리함을 얻을 수 있다.
기본적으로 MFC에서 제공하는 Array 클래스는
-
CObArray : CObject 객체 포인터 배열
-
CByteArray : 8비트 데이터(== unsigned char) 배열
-
CDWordArray : 32비트(== unsigned int) 배열
-
CPtrArray : void 포인터 배열
-
CStringArray : CString 클래스 객체 배열
-
CWordArray : 16비트 데이터 배열
-
CUIntArray : (==unsigne int) 데이터 배열
등이 있다
사용할 수 있는 함수도 준비 되어 있다.
GetSize() : 배열의 전체 크기 리턴
SetSize() : 배열의 크기를 강제로 설정
RemoveAll() : 배열의 전체 데이터 제거
GetAt() : 주어진 인덱스의 배열값 얻기
SetAt() : 주어진 인덱스의 배열값 설정
Add() : 배열의 크기를 늘린 뒤, 새로운 데이터를 배열의 끝에 추가
InsertAt() : 주어진 인덱스에 새로운 데이터 추가 후, 배열의 크기 늘림
RemoveAt() : 주어진 인덱스의 데이터를 삭제하고, 배열의 크기를 줄임
GetData(); Data를 통째로 Pint로 가져온다,쉽게 말하면 CByteArrayGetData() =>Byte [] 형과 같이 바꾸어 준다는 의미이다.
FreeExtra() : SetSize() 후 배열의 크기가 줄어들었을 경우 버퍼 메모리 해제
내가 만든 구조체 혹은 클래스를 Carry로 관리 할 때는 어떻게 할까
CArray
The CArray class supports arrays that are similar to C arrays, but can dynamically shrink and grow as necessary.
template< class TYPE, class ARG_TYPE > class CArray : public CObject
에 설명 되어 있는 것 처럼
CArray<Mycalss,Myclass*> m_arcls;
처림 CArray를 선언하면
m_arcls.SetAt(new Myclass);
Myclass* p_mycla=m_arcls[0];
p_mycla->Myfunction();
과 같이 사용 할 수 있다.
'개발언어 > c++' 카테고리의 다른 글
함수 포인트, Function Point, 동적 함수호출,임의의 함수 호출 (0) | 2016.06.13 |
---|---|
Visual Studio Release 모드에서 디버깅 (0) | 2016.06.13 |
DLL에 존재 하는 Class 외부에서 참조하기 (0) | 2016.06.13 |
static_lib과 dll을 동시에 지원하는 library를 만들때 주의 할점 (0) | 2016.06.13 |
Win32 Static Library( 정적 라이브러리 ) (0) | 2016.06.13 |