STL, vector 질문입니다.
글쓴이: Geniys / 작성시간: 화, 2006/06/20 - 9:09오후
vector에 어떠한 객체들을 모아서 사용하고 싶은데..
그 객체는 함수 안에서 일반 변수처럼 생성되서 함수가 끝나면 사라지게 됩니다.
이때 문제는 그냥 생성하고, 종료하면 종료할때 생성자에서 new로 만든 동적영역을 소멸자에서 delete하게 되는데...
이때는 문제가 없었습니다.
그러나,
vector에 push_back()을 사용해서 위의 객체를 넣으니...
delete할때 에러가 발생하더군요... Visual C++ 6.0에서 컴파일 했습니다.
vector에 넣으면 어떻게 복사가 되서 들어가는지 알고리즘이 궁금합니다.(소스를 봤는데 아직 제겐 너무 어려웠습니다.)
만약 복사를 해서 넣게되면 위의 문제를 해결하려면 복사생성자를 만들어 줘야 하는지요?
Forums:
넵 STL의 vector는 복사
넵 STL의 vector는 복사 생성자를 사용합니다. shallow copy를 해도 되는 객체의 경우는 디폴트복사생성자로 해도 무방하겠지만, deep copy를 해야 하는 객체의 경우는 복사생성자를 만들어 주셔야 합니다.
Geniys님의 경우, 제 생각엔 deep copy를 해야 하는 경우인 것 같군요.
답변 감사드립니다.
답변 감사드립니다. ^^
그럼 벡터를 소멸시키는 경우엔,
들어간 객체의 내부에 있는 소멸자가 불려져서 객체가 소멸된 후에, 벡터 객체가 소멸되는지요.
============================
A watched pot never boils.
============================
A watched pot never boils
넵. 벡터는 소멸될때
넵. 벡터는 소멸될때 자신이 담고 있는 데이터들의 소멸자를 호출합니다.
캄사합니다.
캄사합니다. ^^
============================
A watched pot never boils.
============================
A watched pot never boils
댓글 달기