问一个有关std::list的问题
有一个全局变量std::list<NODE> gList,其中NODE是结构体
struct
{
int len;
char* msg;
}NODE;
我像如下这样添加元素可以吗?
void add()
{
NODE p;
p->len=5;
p->msg=new char[6];
strcpy(p->msg,"hello");
gList.push_back(p);
}
这样问的原因是p是局部变量,这样添加在add方法之外能不能正常访问元素?还是一离开ad
[解决办法]
可以list中保存的是 p的一个拷贝
[解决办法]
啥也不说,自己看代码
typedef struct
{
int len;
char* msg;
}NODE;
list<NODE>gList;
void add()
{
NODE p;
p.len=5;
p.msg=new char[6];
strcpy(p.msg,"hello");
gList.push_back(p);
}
void main()
{
add();
list<NODE>::iterator iter=gList.begin();
list<NODE>::iterator end=gList.end();
for (;iter!=end;iter++)
{
cout<<(*iter).len<<endl;
cout<<(*iter).msg<<endl;
}
}