精华内容
下载资源
问答
  • C++创建二维数组

    2019-08-09 18:52:25
    C++创建二维数组二维静态数组二维动态数组利用vector创建二维数组功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容...

    二维静态数组

    int v1[2][3]={{1,2,3},{4,5,6}};
    

    二维动态数组

    int **v2;
    v2 = new int*[10];    //注意,int*[10]表示一个有10个元素的指针数组
    for (int i = 0; i < 10; ++i)
    {
        v2[i] = new int[5];
    }
    

    利用vector创建二维数组

        vector<vector<int> > v3(rows,vector<int>(columns));
        for(int i=0;i<rows;i++){//初始化
             for(int j=0;j<columns;j++){
               v3[i][j] = v1[i][j];
             }
        }
    
    展开全文
  • c++创建二维数组

    千次阅读 2019-02-24 09:19:27
    c++里不在‘二维数组’这种类型,二维数组会被解释为这个一维数组的元素是类型是另一种一维数组。 方法一:使用常量 如果将b声明为一个常量,如new int[a][5],它的实质和一维动态数组没有太大区别只是数组元素被...

    c++里不在‘二维数组’这种类型,二维数组会被解释为这个一维数组的元素是类型是另一种一维数组。

    方法一:使用常量

    如果将b声明为一个常量,如new int[a][5],它的实质和一维动态数组没有太大区别只是数组元素被声明为了int[5]。

        void TestFunc_(unsigned int n)  
        {  
            unsigned int i, j;  
          
            // 元素类型为‘int[5]’的数组,可赋值给‘int[5]’类型的指针.  
            int (* array2D)[5] = new int[n][5];  
            for(i=0; i<n; ++i)  
            {  
                for(j=0; j<5; ++j)  
                {  
                    array2D[i][j] = i * 5 + j;  
                }  
            }  
          
            // 回收方法和普通动态数组相同,使用'delete[]'即可  
            delete[] array2D;  
        }  

    这个方法需要确定b的大小。

    方法二:使用指针间接引用

    声明多个一维数组,然后将这些数组的首地址按顺序储存到一个动态数组中。

        void TestFunc_pointer(unsigned int height, unsigned int width)  
        {  
            unsigned int i, j;  
          
            //  数组的元素类型为‘int *’,可赋值给指向‘int *’的指针.  
            int **array2D = new int *[height];  
            for(i=0; i<height; ++i)  
            {  
                array2D[i] = new int[width];  
            }  
          
            // 访问.  
            for(i=0; i<height; ++i)  
            {  
                for(j=0; j<width; ++j)  
                {  
                    // 内存非连续,注意防止越界.  
                    array2D[i][j] = i * width + j;  
                }  
            }  
          
            // 首先回收低一级的动态数组.  
            for(i=0; i<height; ++i)  
            {  
                delete[] array2D[i];  
            }  
            // 然后回收高一级的动态数组.  
            delete[] array2D;  
        }  

    这个方法实现了两个维度的动态创建,访问也比较方便。但是有一个缺点:由于低一级的数组是分开创建的,所以整个二维数组的内存不连续——类似‘array2D[i * width + j]’这样的访问就不要使用了,容易造成访问越界。

    方法三:使用Vector

        void TestFunc_vector(unsigned int height, unsigned int width)  
        {  
            typedef std::vector<int>  IntVector;  
            typedef std::vector<IntVector>    IntVector2D;  
            unsigned int i, j;  
          
            IntVector2D *pArray2D = new IntVector2D;  
          
            // 动态设置大小.  
            pArray2D->resize(height);  
            for(i=0; i<height; ++i)  
            {  
                (*pArray2D)[i].resize(width);  
            }  
          
            for(i=0; i<height; ++i)  
            {  
                for(j=0; j<width; ++j)  
                {  
                    (*pArray2D)[i][j] = i * width + j;  
                }  
            }  
          
            delete pArray2D;  
        }  

    可以看到,在vector这个‘更高级’的数组帮助下,我们能够很轻易的创建二维数组。稍微美中不足的是由于引入了STL,程序会变得更大一些——但基本不影响运行速度。

    参考资料:https://blog.csdn.net/yuqinjh/article/details/79095787

    展开全文
  • c++ 创建二维数组

    2019-05-30 11:04:07
    二维数组的建立方式: int** arry = (int **) malloc( n*sizeof(int *)); for (int i = 0; i < n; i++) //n是行数 { arry[i] = (int *)malloc(sizeof(int) * n); //是列数 } 数组: 数组作为参数时,在函数...

     二维数组的建立方式:

    int** arry = (int **) malloc( n*sizeof(int *));
    for (int i = 0; i < n; i++) //n是行数
        {
            arry[i] = (int *)malloc(sizeof(int) * n); //是列数
        }

    数组:

    数组作为参数时,在函数中对数组元素的修改就等同于是对原数组元素的修改(这与普通的局部变量不同),虽然数组可以作为参数,但是却不允许作为返回类型出现,如吗,s果要返回数组,只能将要返回的数组作为参数传入。

    展开全文
  • c++创建二维数组的方法欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左...

    用malloc函数创建二维数组

    int first(int row,int col) {
    	int** array = (int**)malloc(sizeof(int*) * row);
    	if (array != NULL) {   //如果申请成功
    		for (int i = 0;i < row;i++) {
    			array[i] = (int*)malloc(sizeof(int) * col);
    			if (array[i] != NULL)   //如果申请成功 
    				memset(array[i], 0, col * sizeof(int)); //初始化为0
    			else
    				return -1;
    		}
    		for (int i = 0;i < row;i++) {
    			free(array[i]);			//释放内存
    		}
    		free(array);    			//释放内存
    		array = NULL;				//指针重定向,避免野指针
    	}
    	return 0;
    }
    

    解释
    1
    用malloc函数创建二维数组需调用#include<stdlib.h> 库函数,且需要判断内存是否分配成功 一般情况下都会成功,以防万一
    2
    用该方法分配的内存空间不连续,不能通过 array[i * width + j] 访问数组
    3
    初始化函数 memset函数原型
    void * memset (void * p,int c,size_t n);
    memset函数以字节为单位进行赋值,故对int double型时只能赋值0
    详细解释参见浅谈C中malloc和memset函数.

    用new运算符创建二维数组

    void second(int row, int col) {
       int** array = new int* [row];
       for (int i = 0;i < row;i++) {
       	array[i] = new int[col]();
       //tmp[i]=new int[m]{}; {}是()的一种扩展方式,最好统一用() 避免错误 
       //全部初始化为0
       }
       Print(row, col, array);
       for (int i = 0;i < row;i++) {
       	delete[] array[i];         //释放内存
       }
       delete[] array;          	 //释放内存
       array = NULL;  			//指针重定向,避免野指针
    }
    

    解释
    1
    用new运算符请求的内存同样不连续
    2
    new的初始化更多细节参见new的初始化.
    3
    关于new与malloc的区别参见new和malloc的区别.这篇文章讲的很详细,建议看一下
    特别注意new malloc分配的内存空间都在堆中

    使用STL中的容器类创建二维数组

    void three(int row, int col) {
    	vector<vector<int> >array(row, vector<int>(col,1));
    	//vector<vector<int> >array(row, vector<int>(col));此时初始化为0
    }
    

    解释
    1:使用vector创建二维数组需要导入#include 库
    2: 这种方式创建的二维数组内存连续,可以使用array[i * width + j]访问数组,且并不需要内存回收,故推荐使用这种方式
    另外
    vector的元素被初始化为与其类型相关的缺省值:算术和指针类型的缺省值是 0,对于class 类型,缺省值可通过调用这类的缺省构造函数获得,我们还可以为每个元素提供一个显式的初始值来完成初始化,例如
    vector< int > ivec( 10, -1 );
    定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1 不需要回收空间

    第一次写博客,如有不足之处,望请提出

    展开全文
  • C++创建二维数组的四种方式

    千次阅读 2020-08-10 17:19:28
    利用vector创建二维数组 包含头文件 #include <iostream> #include <vector> using namespace std; int rows=3,col=4; 使用一维数组模拟二维数组 int arr[]={5,1,6,9,8,3,5,5,0,6,0,7};//一维数组 for...
  • 直接声明一个二维数组 适用于在确定二维数组的长度的条件下. int a[9][9] 为二重指针开辟空间 适用于不确定长度,长度需要输入的情况,例: int m , n; cin >> m >> n; int** a; a = new int* [m]; for(int...
  • (1)使用一维数组访问的元素方式 访问二维数组 int rows=2;//rows>0 int columns=3;//columns>0 int matrix[] = {1,2,3,4,5,6}; for(int i=0;i<rows;i++) { for(int j=0;j<columns;j++) { cout&...
  • c++ 创建二维数组的几种方法

    万次阅读 多人点赞 2016-12-14 19:48:26
    1、用new申请一块内存空间存放二维数组 #include using namespace std; int main(int argc, char* argv[]) { int n=10,m=2; // int **swp; //动态申请二维数组 n行 m列 swp=new int*[n]; for(int i=0;i;i++) ...
  • C/C++创建二维数组/指针数组

    千次阅读 2015-09-10 16:45:15
    分配一个x * y大的数组,然后要用的时候把二维下标映射到一维中,这样做的最大好处是,分配的数组空间是连续的,像一个真正的二维数组,缺点是用起来不像二维数组,得做下标映射。 3.先分配一组指向数组的指针,...
  • 1. 确定维度定义 int rows=4; int cols=5; int n2Arr[rows][cols];//错误,矩阵维度必须为常数 int n2Arr[4][5]; //正确,定义了4*5的二维矩阵 /****二维矩阵初始化*****/ ... 定义二维数组维度需要确定为长度;  ②.
  • C++创建二维数组和矩阵

    千次阅读 2014-09-25 13:49:16
    //构造二维数组,矩阵 #include using namespace std; int main() { int rows=3;//行 int columns=6;//列 int **number=new int*[rows];//注意这两个动态数组的创建 for(int i=0;i { number[i]=new int...
  • c/c++创建二维数组

    2013-05-16 17:07:32
    设创建一个int a[3][4]; c创建二维数组  int **ptr; ptr = (int **) malloc(3*sizeof(int*)); int i; for(i = 0; i ; i++) { ptr[i] = (int *)malloc(4*sizeof(int)); } int j; fo

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 722
精华内容 288
关键字:

c++创建二维数组

c++ 订阅