C++使用容器存储指针变量代替链表,操作方便! 

1,注意存储的是外部指针的一个拷贝,删除时首先是删除这个拷贝指针的内容,也就是删除外部指针所指向内存的内容,然后再删除容器中的变量(用来存储指针的内存).

如:char* ptr = new char[16];

vector<char*> vecPtr;

vecPtr.push_back(ptr);

这个时候是

_ptr = ptr; // 拷贝指针

在vecPtr中存储的是4个字节的指针拷贝.

2,然后是删除vector中的指针变量,即N * 4Byte,在vector中是不再重新分配空间的.

详细代码如下:

#include "stdafx.h"
#include <vector>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<char*> vecPtr;
char* ptr = new char[16];
ptr[0] = 0;
memcpy(ptr, "abc", 16);
vecPtr.push_back(ptr);
vector<char*>::iterator it = vecPtr.begin();
for (; it != vecPtr.end(); )
{
   delete[] *it;
   it = vecPtr.erase(it);
}
return 0;
}