|
그럼 for문으로 해서 루프를 돌려서 특정부분을 지우는 방법은 어려운거네요
14가 있다고 하면
한개를 지울 때 마다 14에서 13로 12로 떨어 지고
루프문은 올라가니까 6이나 7,8 에서 에러가 떨어 질테니깐요
많은 질문을 보니까
delete (void *)a->Items[0];
a->Delete(0);
으로 많이 들 하지만 그건 처음부터 지우니까.. 특정한 부분을 못지우고요..
헉... 이거 문제네요 헉.....
Lyn 님이 쓰신 글 :
: 0~99 번 까지 루프를 돈다 칩시다..
: 그리고 3번을 지웠다고 가정합시다..
: 그럼 인덱스가 0~98로 재배열되죠. 근데 루프에선 99번을 접근하니까 List Index OB 뜨는게 당연한거죠..
:
: 사악왕 님이 쓰신 글 :
: : for(int i=0 ; i<a->Count;i++)
: : {
: : if(a->intsetID == 3)
: : {
: : delete (void *)a->Items[i];
: : a->Delete(i); <-- 추가 했습니다.....
: : {
: : {
: : 이렇게 하니까 List index out of bounds 에러가 생겼습니다.....
: : 다 제거가 되어야 되는건 아닌지요 ?
: : Lyn 님이 쓰신 글 :
: : : 제 눈에는 메모리에서 제거하는 코드만 보이고 리스트에서 빼는 코드는 안보이네요
: : :
: : :
: : : 사악왕 님이 쓰신 글 :
: : : : Tlist에서
: : : : 1번버튼을 클릭할경우 10개가 입력이 됩니다. 0~9
: : : : 2번버튼을 클릭하면 3번만 지워지게 했습니다.
: : : : for(int i=0 ; i<a->Count;i++)
: : : : {
: : : : if(a->intsetID == 3)
: : : : {
: : : : delete (void *)a->Items[ii];
: : : : continue;
: : : : }
: : : : }
: : : : 1번을 한번더 클릭할경우 리스트 카운터가 19가 되어야 하는되 20이 됩니다
: : : : 한마디로
: : : : delete 가 않되었는지....
: : : : a->Clear(); 할경우에는 모든 것이 싹 지워 집니다.
: : : : 크기를 변경을 해야 하는데 그 방법을 아직 못찾아서 이렇게 글을 남김니다.
|