이 테스트 프로그램이 있습니다. iterator를 사용하여 목록에서 struct를 삭제하는 방법을 모르겠습니다.반복자를 사용하여 STL 목록에서 C++ 구조 삭제
#include<iostream>
#include<list>
using namespace std;
typedef struct Node
{
int * array;
int id;
}Node;
void main()
{
list<Node> nlist;
for(int i=0;i<3;i++)
{
Node * p = new Node;//how to delete is later?
p->array = new int[5];//new array
memset(p->array,0,5*sizeof(int));
p->id = i;
nlist.push_back(*p);//push node into list
}
//delete each struct in list
list<Node>::iterator lt = nlist.begin();
while(lt != nlist.end())
{
delete [] lt->array;
delete &(*lt);//how to delete the "Node"?
lt++;
}
}
구조체를 개별적으로 삭제하는 방법을 알고 있습니다. 그것은 다음과 같이이다 : 그러나
Node * p = new Node;
p->array = new int[5];
delete [] p->array; //delete the array
delete p;//delete the struct
, 그것은 다시 목록에 밀려 때, 나는리스트 반복자에 따라 삭제하는 방법을 모르겠어요.
list<Node>::iterator lt = nlist.begin();
while(lt != nlist.end())
{
delete [] lt->array;
delete &(*lt);//how to delete the "Node"?
lt++;
}
왜 동적으로 할당합니까? – chris
그것은 단지 예일뿐입니다. 제 프로그램은 이런식이 아닙니다. – Terry