C++创建动态二维数组的两种方法

来源:互联网 发布:mac废纸篓清空不了 编辑:程序博客网 时间:2024/05/22 22:04

今天给大家分享一下C++里创建动态数组的两种方法,第一种是用new来申请空间,第二种用vector(向量)模板来创建。下面分别给大家讲解一下思路。
MUSIC!
1、使用new来申请内存
我们用new申请内存来创建一个二维数组的思路是先用一个二级指针指向指针数组,之后使指针数组的每个元素指向分配的空间。
int *p = new int[size];
p[i] = new int[size];//创建了一个size*size大小的二维数组
此时p就指向了二维数组的首地址
这样我们就可以通过下标运算符来访问二维数组的元素啦~(≧▽≦)/~啦啦啦!好啦,思路明确,演示如下:

#include <iostream>int main(){//by bingogo    int **arr = new int*[3];//先使一个二级指针指向数组指针的地址    for (int i = 0; i < 3; i++)    {//为一级指针分配数组的地址        arr[i] = new int[3];    }    //分配过空间后我们就能够使用下标运算符来使用二维数组了    int k = 1;    for (int row = 0; row < 3; row++)    {//给数组元素赋值        for (int col = 0; col < 3; col++)        {            arr[row][col] = k++;        }    }    for (int row = 0; row < 3; row++)    {//输出数组元素的数据        for (int col = 0; col < 3; col++)        {            std::cout << arr[row][col] << " ";        }        std::cout << std::endl;    }    for(int i = 0; i < 3; i++)    {        delete []p[i];//释放空间    }    std::cin.get();    return 0;}

2、使用vector模板来创建
C++的template参数是可以嵌套定义的,你也可以这样定义一个模板的Instance (实例)
vector < vector > arr(3);//注意> 和> 之间的空格。
这样就创建了一个保存三个向量的arr,这一步也是关键。之后我们要用到arr的方法resize来确定每个向量的长度。
arr[0].resize(3);//第一个向量的长度为3个int (因为这里我们的vector是int类型的)
由于我们是创建二维数组,所以我们可以用一个循环使每一个向量长度都相等,达到二维数组的目的。这之后我们就可以用下标运算符来访问元素啦~(≧▽≦)/~啦啦啦。比如arr[1][1]就能表示第二行第二列的值。多说无益,演示代码如下:

#include <iostream>#include <vector>int main(){//by bingogo    std::vector< std::vector<int> > varr(3);    for (int i = 0; i < 3; i++)        varr[i].resize(3);//设置每一个向量的长度    int k = 0;    for (int row = 0; row < 3; row++)    {//对每个元素赋值        for (int col = 0; col < 3; clo++)        {            varr[row][col] = k++;        }    }    for (int row = 0; row < 3; row++)    {//输出元素的值        for (int clo = 0; clo < 3; clo++)        {            std::cout << varr[row][clo] << " ";        }        std::cout << "\n";    }    std::cin.get();    return 0;}

想要调整数组的列的大小,可以重新执行resize方法
for(int i = 0; i < row; i++)
arr[i].resize(colSize);

好啦,思路就简单的讲解了一下,有心情的朋友还可以沿这个思路走下去,动手实验一下动态的三维数组应该怎么做。

0 0
原创粉丝点击