STL의 할당기(Allocator)에는 memcpy같은것이 없나요?

kkb110의 이미지

정말난감하군요

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
}

라고되있네요 ㅠㅠ

bugiii의 이미지

객체의 복사에 memcpy 로 해서는 안되는 경우가 있습니다. 예를 들자면 멤버중에 동적 할당한 메모리의 날짜 포인터가 있다든가하면 단순 비트 복사만으로는 해결할 수 없는 경우가 있습니다. 또 컨테이너가 연속 메모리가 아니라 여러곳의 메모리를 참조하는 list 나 map 같은 경우라면 해당 컨테이너의 반복자를 이용하지 않고서는 다음 요소의 메모리를 알 수가 없을 것입니다.

원하시는 그런 경우에는 직접 만드셔서 사용하셔야 될 것 같습니다. 아마 몇가지 구현 예에서 찾아볼 수 있을 것 같은데요.

일반성을 지향해야 할 라이브러리 제작자의 입장에서는 문제가 생길 것 같은 부분은 안전한 것을 우선하게 되는 것이 맞다고 봅니다.

그리고, 단어 선택에 좀 더 신중을 기해주셨으면 좋겠습니다. 많은 분들이 보시는 게시판이잖습니까.