一维数组
***********指针类型*************
//-----------new----------------
int*p = new int[arraySize];
//-----------delete----------------
//new开辟后需要释放空间
delete []p; //删除数组空间
delete p; //错误,只删除了第一个元素
***********vector类型*************
vector<string> v1; // 创建空容器,其对象类型为string类
vector<string> v2(10); // 创建有10个具有初始值(即空串)的string类对象的容器
vector<string> v3(5, "hello"); // 创建有5个值为“hello”的string类对象的容器
vector<string> v4(v3.begin(), v3.end()); // v4是与v3相同的容器(完全复制)
//int类型
vector<int> p; //创建空容器
vector<int> p(arraySize);
vector<int> p(arraySize, 0);
***********直接类型*************
int p[arraySize];
二维数组
***********指针类型*************
//-----------new----------------
int **p; //定义指向int指针的指针
p = new int*[arraySize]; //申请arraySize个指针,并使p指向它
for(int i = 0; i < arraySize; ++i)
p[i] = new int[arraySize]; //分别使N个指针指向N个int的对象
//上述new的工作等同于
int (*p)[arraySize] = new int[arraySize][arraySize]; //定义一个指向有arraySize个元素的行指针p
//-----------delete----------------
//用new在堆上开辟的空间,必须要用delete释放,否则会有内存泄露
for (int i = 0; i < arraySize; i++)
{
delete []p[i]; //删除数组元素,但是申请的arraySize个行指针还没有删除
p[i] = NULL;
}
delete []p; //删除行指针
p = NULL;
************直接类型*************
int p[arraySize][arraySize]; vector<vector<int> > array(arrzySize, vector<int>(arraySize, 0));
三维数组
***********指针类型*************
//-----------new----------------
int ***p;
p = new int **[K];
for(int i = 0; i < K; ++i)
{
p[i] = new int *[M];
for(int j = 0; j < M; ++j)
{
p[i][j] = new int[N];
}
}
//-----------delete----------------
for(int i = 0; i < K; ++i)
{
for(int j = 0; j < M; ++j)
delete []p[i][j];
delete []p[i];
}
delete []p;
***********vector类型*************
vector<vector<vector<int> > > p(m, vector<vector<int> >(K, vector<int>(M)));