先看段代码:
没有对myserver和list对象进行释放,主要是能够访问push进去的数据,只作为测试,对于多少个元素,要在堆上分配多少个元素;
#include <iostream.h>
#include "list"
using namespace std;
struct server
{
char * sch;
char * ip;
int port;
};
typedef list<server*> serverlist;
struct area
{
char * my;
serverlist mylist;
};
typedef list<area*> arealist;
arealist myarealist;
list<area*>::iterator pstrlist;
server *myserver = new server[3];
void main()
{
area myarea[2];
for (int i=0; i<2; i++)
{
if(i==0)
myarea[i].my = "十三乡";
else
myarea[i].my = "七里乡";
for (int u=0; u<3; u++)
{
myserver[u].sch = "test";
myserver[u].ip = "192.168.1.25";
myserver[u].port = 8000+u;
myarea[i].mylist.push_back(& myserver[u]);
}
myarealist.push_back(& myarea[i]);
}
pstrlist = myarealist.begin();
for(; pstrlist!=myarealist.end(); pstrlist++)
{
cout<<*pstrlist<<endl;
}
}
调试运行结果(VC6.0):
为了访问元素不应对myserver进行释放。当释放list之时,要对myserver进行释放。