개인적으로 STL Container를 이용한 동적할당을 자주 사용하는 편이다.
데이터의 수정과 복사등에 편리하기 때문이다.
그러나 삭제시 매번 Loop를 돌아서 참 귀찮았다..
그래서 그 항목들을 모아봤다.
// 이렇게 삭제 대상을 모아놓고...
typedef struct _rmv_stl_inst{
// 이렇게 호출해 버린다...
std::for_each( m_vecOwnshipHistory.begin(), m_vecOwnshipHistory.end(), _RMV_STL_INST() );
혹은..
이렇게 선언해 놓고... 사용하기도 하고..
std::for_each(
m_vecOwnshipHistory.begin(),
m_vecOwnshipHistory.end(),
_AGRTM_RMV_STL_INSTANCE()
);
아예 람다를 쓰기도 한다.
데이터의 수정과 복사등에 편리하기 때문이다.
그러나 삭제시 매번 Loop를 돌아서 참 귀찮았다..
그래서 그 항목들을 모아봤다.
// 이렇게 삭제 대상을 모아놓고...
typedef struct _rmv_stl_inst{
public:
_rmv_stl_inst(void){}
void operator() (LP_TMA_OWNSHIP_INFO& _val) { delete _val; }
void operator() (LP_TMA_TRACKING_INFO& _val) { delete _val; }
}_RMV_STL_INST;
// 이렇게 호출해 버린다...
std::for_each( m_vecOwnshipHistory.begin(), m_vecOwnshipHistory.end(), _RMV_STL_INST() );
혹은..
class U2INTERFACEDll _AGRTM_RMV_STL_INSTANCE{
public:
_AGRTM_RMV_STL_INSTANCE(void){}
void operator() (LP_TIF_TRACKING_INFO& _val) { delete _val; } // TrackingInfo
void operator() (LP_TIF_SENSOR_INFO& _val) { delete _val; } // SensorInfo
void operator() (LP_TIF_OWNSHIP_INFO& _val) { delete _val; } // OwnshipInfo
void operator() (LP_TIF_TGT_DROP_INFO& _val) { delete _val; } // Tartget DropInfo
void operator() (LP_RCV_SCANSET_STC& _val) { delete _val; } // ScanSet
void operator() (LP_RCV_SCANSET_DYN& _val) { delete _val; } // ScanSet
void operator() (LP_TRACKING_SCANSET& _val) { delete _val; } // ScanSet
};
이렇게 선언해 놓고... 사용하기도 하고..
m_vecOwnshipHistory.begin(),
m_vecOwnshipHistory.end(),
_AGRTM_RMV_STL_INSTANCE()
);
아예 람다를 쓰기도 한다.
if( m_vecTrackingHistory.empty() == false ){
std::for_each(
m_vecTrackingHistory.begin(),
m_vecTrackingHistory.end(),
[](LP_TMA_TRACKING_INFO& _val){ delete _val; }
);
m_vecTrackingHistory.clear();
}
'삽질' 카테고리의 다른 글
ImageCodecInfo Class (0) | 2011.11.04 |
---|---|
GetImageEncoders Function (0) | 2011.11.04 |
[ListCtrl] 아이템 외부 선택 - SetSelectionMark(), SetItemState(), SetFocus() (0) | 2011.10.15 |
Oracle 3개 Table 조인 (0) | 2011.10.13 |
[MFC] ON_COMMAND_RANGE 매크로 (0) | 2011.10.13 |
|
댓글0
댓글을 달아 주세요