#include "stdafx.h"
#include <iostream>
#include <map>
using namespace std;
using std::map;
class CA;
typedef map<int,CA*> MAP;
class CA {
public:
int a;
};
int _tmain(int argc, _TCHAR* argv[])
{
MAP map;
for(int i=0;i<2;i++)
{
CA* pA = new CA;
pA->a = 1;
map[i] = pA;
}
MAP::iterator it = map.begin();
while(it != map.end())
{
CA* pA = it->second;
delete pA;
pA = NULL; //pA地址问NULL,但是 it->second的地址不为NULL;因此如果没有进行erase的话,严格意义来讲应该开启下面这句话,避免map内部无法准确的使用空值判断;
// it->second = NULL;
it ++;
}
it = map.begin();
while(it != map.end())
{
CA* pA = it->second;
int a = 0;
it ++;
}
return 0;
}
/*
这里复习一下c++的一些概念:
*pA 就是指针pA所指地址上的数据
pA 就是该指针所指的地址,这个也就是为什么pA=NULL,it->second 不为NULL
&pA 表示该指针的地址
*/