STL의 할당기(Allocator)에는 memcpy같은것이 없나요?
글쓴이: kkb110 / 작성시간: 월, 2005/03/07 - 4:55오전
정말난감하군요
STL 할당기에 construct(p,t) 라는 개체 하나를 복사하는명령어는있는데
memcpy같이 범위를정해서 한번에 쌱 복사하는게없네요
허허 하나하나씩 루프로 construct(p,t)를 돌려야하나요??
참 뭐 같아요 ㅠㅠ
VC7내장 STL에는
template<class _FwdIt,
class _Diff,
class _Tval> inline
void _Uninit_fill_n(_FwdIt _First, _Diff _Count, const _Tval& _Val,
_Nonscalar_ptr_iterator_tag)
{ // copy _Count *_Val to raw _First, arbitrary type
_FwdIt _Next = _First;
_TRY_BEGIN
for (; 0 < _Count; --_Count, ++_First)
_Construct(&*_First, _Val);
_CATCH_ALL
for (; _Next != _First; ++_Next)
_Destroy(&*_Next);
_RERAISE;
_CATCH_END
}
라고되있네요 ㅠㅠ
Forums:
객체의 복사에 memcpy 로 해서는 안되는 경우가 있습니다. 예를 들자
객체의 복사에 memcpy 로 해서는 안되는 경우가 있습니다. 예를 들자면 멤버중에 동적 할당한 메모리의 날짜 포인터가 있다든가하면 단순 비트 복사만으로는 해결할 수 없는 경우가 있습니다. 또 컨테이너가 연속 메모리가 아니라 여러곳의 메모리를 참조하는 list 나 map 같은 경우라면 해당 컨테이너의 반복자를 이용하지 않고서는 다음 요소의 메모리를 알 수가 없을 것입니다.
원하시는 그런 경우에는 직접 만드셔서 사용하셔야 될 것 같습니다. 아마 몇가지 구현 예에서 찾아볼 수 있을 것 같은데요.
일반성을 지향해야 할 라이브러리 제작자의 입장에서는 문제가 생길 것 같은 부분은 안전한 것을 우선하게 되는 것이 맞다고 봅니다.
그리고, 단어 선택에 좀 더 신중을 기해주셨으면 좋겠습니다. 많은 분들이 보시는 게시판이잖습니까.
댓글 달기