add ZtCArray.H
This commit is contained in:
@ -32,7 +32,7 @@ namespace ZNsMain
|
|||||||
{
|
{
|
||||||
private: mutable
|
private: mutable
|
||||||
Type* mp_Data ; mutable
|
Type* mp_Data ; mutable
|
||||||
TSize ml_ElePos; // *mp_Data 가 배열에서 차지하는 위치
|
TSize ml_ElePos; // *mp_Data 가 배열에서 차지하는 위치
|
||||||
ZCArray* mp_CArray;
|
ZCArray* mp_CArray;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -100,8 +100,8 @@ namespace ZNsMain
|
|||||||
TypeSize ml_UseSize ;
|
TypeSize ml_UseSize ;
|
||||||
TypeSize ml_AddSize ;
|
TypeSize ml_AddSize ;
|
||||||
|
|
||||||
/* TSize ml_AddSize 는 추가 메모리를 지정. 한 개의 원소가 삽입되서
|
/* TSize ml_AddSize 는 추가 메모리를 지정. 한 개의 원소가 삽입되서
|
||||||
재할당해야 할 경우, ml_AddSize 개 만큼을 미리 할당한다.
|
재할당해야 할 경우, ml_AddSize 개 만큼을 미리 할당한다.
|
||||||
|
|
||||||
protected:*/
|
protected:*/
|
||||||
public :
|
public :
|
||||||
@ -357,7 +357,7 @@ namespace ZNsMain
|
|||||||
|
|
||||||
Type& AddHead()
|
Type& AddHead()
|
||||||
{
|
{
|
||||||
// 앞에 빈 원소를 삽입하고 그 원소를 반환한다.
|
// 앞에 빈 원소를 삽입하고 그 원소를 반환한다.
|
||||||
|
|
||||||
ReAlloc((ml_UseSize++)+1);
|
ReAlloc((ml_UseSize++)+1);
|
||||||
|
|
||||||
@ -379,7 +379,7 @@ namespace ZNsMain
|
|||||||
|
|
||||||
Type& AddTail()
|
Type& AddTail()
|
||||||
{
|
{
|
||||||
// 끝에 빈 원소를 삽입하고 그 원소를 반환한다.
|
// 끝에 빈 원소를 삽입하고 그 원소를 반환한다.
|
||||||
|
|
||||||
ReAlloc((ml_UseSize++)+1); return mp_TypeArr[ml_UseSize-1];
|
ReAlloc((ml_UseSize++)+1); return mp_TypeArr[ml_UseSize-1];
|
||||||
}/*
|
}/*
|
||||||
@ -426,8 +426,8 @@ namespace ZNsMain
|
|||||||
ZNsMain::CTypeData_T<TFunctor>::
|
ZNsMain::CTypeData_T<TFunctor>::
|
||||||
GetObjRef(AO_Functor)(*VP_TypeArr); ++VP_TypeArr;
|
GetObjRef(AO_Functor)(*VP_TypeArr); ++VP_TypeArr;
|
||||||
|
|
||||||
/* 위 코드로 인해서, AO_Functor 이 함수일 때 뿐이 아니라,
|
/* 위 코드로 인해서, AO_Functor 이 함수일 때 뿐이 아니라,
|
||||||
operator() 연산자를 가진 object 포인터일 때도 사용할 수 있게 되었다. */
|
operator() 연산자를 가진 object 포인터일 때도 사용할 수 있게 되었다. */
|
||||||
}/*
|
}/*
|
||||||
__for0(TypeSize, i, ml_UseSize)*/
|
__for0(TypeSize, i, ml_UseSize)*/
|
||||||
}/*
|
}/*
|
||||||
@ -438,19 +438,19 @@ namespace ZNsMain
|
|||||||
{
|
{
|
||||||
/*/////////////////////////////////////////////////////////////////////////////
|
/*/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
■ TTypeHelp 가 class 일 경우, 크기가 커서 참조로 넘어가야 한다면,
|
■ TTypeHelp 가 class 일 경우, 크기가 커서 참조로 넘어가야 한다면,
|
||||||
|
|
||||||
IterElement<myFunctor, myClass&>(myFunctor_obj, myClass_Obj);
|
IterElement<myFunctor, myClass&>(myFunctor_obj, myClass_Obj);
|
||||||
|
|
||||||
의 형태로 호출할 게 아니라, ZNsMain::ZtCObjectPtr<> 을 사용하여,
|
의 형태로 호출할 게 아니라, ZNsMain::ZtCObjectPtr<> 을 사용하여,
|
||||||
|
|
||||||
myClass myClass_Obj; ZNsMain::ZtCObjectPtr<myClass> myCObjPtr(myClass_Obj);
|
myClass myClass_Obj; ZNsMain::ZtCObjectPtr<myClass> myCObjPtr(myClass_Obj);
|
||||||
|
|
||||||
나
|
나
|
||||||
|
|
||||||
IterElement(myFunctor_obj, ZNsMain::ZtCObjectPtr<myClass>(myClass_Obj));
|
IterElement(myFunctor_obj, ZNsMain::ZtCObjectPtr<myClass>(myClass_Obj));
|
||||||
|
|
||||||
형태를 사용하면 좋을 것 같다. -- 2014-06-16 23:11:00
|
형태를 사용하면 좋을 것 같다. -- 2014-06-16 23:11:00
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////*/
|
/////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
@ -474,19 +474,19 @@ namespace ZNsMain
|
|||||||
{
|
{
|
||||||
/*/////////////////////////////////////////////////////////////////////////////
|
/*/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
■ TTypeHelp 가 class 일 경우, 크기가 커서 참조로 넘어가야 한다면,
|
■ TTypeHelp 가 class 일 경우, 크기가 커서 참조로 넘어가야 한다면,
|
||||||
|
|
||||||
IterElement<myFunctor, myClass&>(myFunctor_obj, myClass_Obj);
|
IterElement<myFunctor, myClass&>(myFunctor_obj, myClass_Obj);
|
||||||
|
|
||||||
의 형태로 호출할 게 아니라, ZNsMain::ZtCObjectPtr<> 을 사용하여,
|
의 형태로 호출할 게 아니라, ZNsMain::ZtCObjectPtr<> 을 사용하여,
|
||||||
|
|
||||||
myClass myClass_Obj; ZNsMain::ZtCObjectPtr<myClass> myCObjPtr(myClass_Obj);
|
myClass myClass_Obj; ZNsMain::ZtCObjectPtr<myClass> myCObjPtr(myClass_Obj);
|
||||||
|
|
||||||
나
|
나
|
||||||
|
|
||||||
IterElement(myFunctor_obj, ZNsMain::ZtCObjectPtr<myClass>(myClass_Obj));
|
IterElement(myFunctor_obj, ZNsMain::ZtCObjectPtr<myClass>(myClass_Obj));
|
||||||
|
|
||||||
형태를 사용하면 좋을 것 같다. -- 2014-06-16 23:11:00
|
형태를 사용하면 좋을 것 같다. -- 2014-06-16 23:11:00
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////*/
|
/////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
@ -509,7 +509,7 @@ namespace ZNsMain
|
|||||||
|
|
||||||
/*///////////////////////////////////////////////////////////////////////////
|
/*///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
■ IterElement() 예제.
|
■ IterElement() 예제.
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "ZCArray.H"
|
#include "ZCArray.H"
|
||||||
@ -536,23 +536,23 @@ namespace ZNsMain
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
■ -- 2014-06-16 23:34:00
|
■ -- 2014-06-16 23:34:00
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////*/
|
///////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
|
||||||
/*///////////////////////////////////////////////////////////////////////////
|
/*///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
■ 순차적으로 각 원소를 순회할 수 있는 자료 구조, 즉 리스트나 배열 클래스는
|
■ 순차적으로 각 원소를 순회할 수 있는 자료 구조, 즉 리스트나 배열 클래스는
|
||||||
|
|
||||||
MoveNextIter(), MovePrevIter()
|
MoveNextIter(), MovePrevIter()
|
||||||
|
|
||||||
멤버를 갖는 것으로 정했다. stl 의 반복자는 너무 일반화하다보니, 성능 상의
|
멤버를 갖는 것으로 정했다. stl 의 반복자는 너무 일반화하다보니, 성능 상의
|
||||||
제약이 발생한 것 같다.
|
제약이 발생한 것 같다.
|
||||||
|
|
||||||
-- 2011-06-07 20:25:00
|
-- 2011-06-07 20:25:00
|
||||||
|
|
||||||
GetDataInIter() 를 추가했다.
|
GetDataInIter() 를 추가했다.
|
||||||
|
|
||||||
-- 2011-06-12 20:42:00
|
-- 2011-06-12 20:42:00
|
||||||
|
|
||||||
@ -724,7 +724,7 @@ namespace ZNsMain
|
|||||||
const Type& GetDataInIter(const IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) const*/
|
const Type& GetDataInIter(const IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) const*/
|
||||||
|
|
||||||
|
|
||||||
// 아래 ItD() 함수는 GetDataInIter() 를 짧게 줄인 것이다.
|
// 아래 ItD() 함수는 GetDataInIter() 를 짧게 줄인 것이다.
|
||||||
|
|
||||||
Type& ItD(Type* AP_Type ){return GetDataInIter(AP_Type );}
|
Type& ItD(Type* AP_Type ){return GetDataInIter(AP_Type );}
|
||||||
Type& ItD(iterator& ARR_CIterator ){return GetDataInIter(ARR_CIterator );}
|
Type& ItD(iterator& ARR_CIterator ){return GetDataInIter(ARR_CIterator );}
|
||||||
@ -759,9 +759,9 @@ namespace ZNsMain
|
|||||||
|
|
||||||
/*////////////////////////////////////////////////////////////////////
|
/*////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
■ class ZtCArrayFixed<> 는 배열 메모리를 자체 할당하지 않고,
|
■ class ZtCArrayFixed<> 는 배열 메모리를 자체 할당하지 않고,
|
||||||
이미 외부에서 new 나 정적으로 선언되어 있는 배열을 사용한다.
|
이미 외부에서 new 나 정적으로 선언되어 있는 배열을 사용한다.
|
||||||
따라서 ZtCArrayFixed<> 내부에서 임의로 배열 크기를 조절할 수 없다.
|
따라서 ZtCArrayFixed<> 내부에서 임의로 배열 크기를 조절할 수 없다.
|
||||||
|
|
||||||
-- 2011-08-05 20:40:00
|
-- 2011-08-05 20:40:00
|
||||||
|
|
||||||
@ -921,7 +921,7 @@ namespace ZNsMain
|
|||||||
|
|
||||||
/*////////////////////////////////////////////////////
|
/*////////////////////////////////////////////////////
|
||||||
|
|
||||||
위 코드를 아래로 하면 안된다.
|
위 코드를 아래로 하면 안된다.
|
||||||
|
|
||||||
void MoveNextIter(const iterator& ARR_CIterator) const
|
void MoveNextIter(const iterator& ARR_CIterator) const
|
||||||
{
|
{
|
||||||
@ -935,7 +935,7 @@ namespace ZNsMain
|
|||||||
}
|
}
|
||||||
//void MovePrevIter(const iterator& ARR_CIterator) const
|
//void MovePrevIter(const iterator& ARR_CIterator) const
|
||||||
|
|
||||||
const iterator 는 Type const * const 이지 Type const * 가 아니다.
|
const iterator 는 Type const * const 이지 Type const * 가 아니다.
|
||||||
|
|
||||||
-- 2011-08-05 23:49:00
|
-- 2011-08-05 23:49:00
|
||||||
|
|
Reference in New Issue
Block a user