일단 클릭해주신 관대함에 예의를();
보통 STL 컨테이너에는 어떠한 객체의 포인터를 줘 담는게 일반적인 쓰임새 아닙니콰?
가령 AAA 클래스의 덩치라 100바이트라면,
std::vector< AAA* > vecAAA;
AAA* temp = new AAA;
vecAAA.push_back( temp );
이렇게 말입니다.
만약 AAA aaa;
std::vector< AAA > vecAAA;
vecAAA.push_back( aaa );
이따위로 짰다가는 당장 팀원들한테 사닥션 맞겠지요.
그런데 포인터를 쓸경우, 원하는것을 삭제할때가 골치입니다.
for문을 돌면서 두개이상의 원소를 삭제할경우, 반복자의 값을 항상 유효하게 유지해야 하기 때문이지요.
혹시 std::vector< AAA* > vecAAA; 이 벡터에서 원하는 포인터를 delete해주는 간결한
코드를 설명해 주실분 계십니까.
도와주세요.
STL vector에 대한 질문입니다.
지나가는뉴비(210.222)
2008-12-25 23:00
추천 0
댓글 8
다른 게시글
-
횽들. 어디가 더 잼있을까? [4]ㅇㄹㅇㄴㄹ(219.250) | 08.12.25추천 0
-
자바는 괜찮은 블로그 어디없음? [10]머그컵(sabuone) | 08.12.25추천 0
-
코딩 못하는데 전산과 오면 [6]찌지리(141.223) | 08.12.25추천 0
-
왜 MFC를 못하면..(이하 늅의 4차원 뻘글..) [13]늅..(210.125) | 08.12.25추천 0
-
졸 아햏햏한 IE7 [2]prismatic(lformula) | 08.12.25추천 0
-
It kinds of magic [3]핫바리(211.187) | 08.12.25추천 0
-
횽들 c언어 기초적인것 질문요 ㅠㅠㅠ [5]11(121.135) | 08.12.25추천 0
-
JAVA 능력자 형분들 제발 좀 도와줘 ㅜㅜ 사례를 할 수도 [24]Fun드반토..(330fsw) | 08.12.25추천 0
-
메리크리스마스고 횽들 도둑 조심해 [4]개뭉이(elther) | 08.12.25추천 0
-
흑흑...아는 사람 컴 조립한다든 횽아 어디 갔냐능 [6]오사카(124.56) | 08.12.25추천 0
저게 일반적인 쓰임새라는 소리는 처음 듣는데
객체를 직접 줘 담을 경우, 항상 100바이트의 복사가 일어나지 않나요?
remove-erase 패턴 같은 게 있긴 한데 원하는 물건인지는 모르겠음
아 덩치큰 놈이면 그럴 수 있겠네.
포인터가 아닌 객체 자체를 담고 있다면 단지 vecAAA.erase[ 해당 인덱스 ] 하겠지만, 포인터가 담겨있을경우에는 그전에 반드시 delete를 해줘야 하는데... 끄으으... 머리가...
지금 shared_ptr 무시하남여
무슨 말인지 모르겠네 그냥 delete *it; v.erase(it); 해주면 되잖아?
std::vector< std::tr1::shared_ptr< AAA > > vecAAA;