:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/10/08 18:53
STL을 안쓴지가 거이 10년은 된것 같아 기억은 가믈 가믈 하지만, 제 상식으로는 Clear를 해주어야 할듯 합니다.
그런데... var1 = var2 는 성립이 안 될것 같습니다. Deep Copy를 해줘야 할듯 합니다. 아니면 = 를 연산자 오버로딩하던가...
09/10/08 19:28
그대로 소스를 짜보고 말씀 드립니다(컴파일에 사용한 툴은 visual studio c++ 2008 expression입니다.)
우선 var2.b에 원소를 하나 넣고 var2에 var1을 대입하였는데 var1에 들어간 원소대로만 나온것을 보니 기존에 넣은 내용은 사라지는것 같습니다. var1의 내용 자체를 그대로 대입시킨것같은데 만약 shallow copy 였다면 메모리 해제시 충돌이 발생하여 오류가 발생하겠지만 그런일은 발생하지 않은것으로 보아서 대입할 시에 데이터를 1:1로 카피하는 deep copy 형식을 취한것 같습니다. 소스입니다. #include <iostream> #include <vector> struct A int a; std::vector<int> b; ;
using namespace std; int main() struct A var1; var1.b.push_back(1); var1.b.push_back(2); var1.b.push_back(3); struct A var2; var2.b.push_back(1); var2 = var1; for(int i = 0; i < var2.b.size(); i++) { cout << var2.b[i] << endl; return 0; }
|