#include "stdafx.h"
#include <vector>
using namespace std;
struct idlist
{
int id;
int upid;
};
struct vec
{
vector<idlist> listid;
} ;
vec idvec;
idlist *pushid(int a,int b)
{
idlist idl;
idl.id=a;
idl.upid=b;
idvec.listid.push_back(idl);
return &idvec.listid.back();
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<idlist*> veclistid;
idlist * pid1=pushid(111111,22222);
veclistid.push_back(pid1);
idlist * pid2=pushid(333333,444444);
veclistid.push_back(pid2);
idlist * pid3=pushid(555555,666666);
veclistid.push_back(pid3);
return 0;
}
idvec.listid
因为大小改变重新申请了内存,导致
veclistid保存的地址失效;产生了错误
所以不要不要对容器元素取地址!<pre name="code" class="cpp">不要对容器元素取地址!<pre name="code" class="cpp">不要对容器元素取地址!