C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在没有内存操作的情况下在C和STL中定义2D数组?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有几种方式可以在没有内存操作的情况下在C和STL中定义2D数组,以下代码说明了两种不同的方法
int main () 
{
    /**************
        1   2   3
        4   5   6
    ***************/
    // Method 1
    const int ROW = 2;
    const int COL = 3;
    int array1[ROW][COL];
    for(int i=0; i<ROW; i++)
        for(int j=0; j<COL; j++)
            array1[i][j] = i*COL+j+1;

    // Method 2
    typedef vector<vector<int> > ARRAY; 
    ARRAY array2;
    vector<int> rowvector;
    for(int i=0; i<ROW; i++)
    {
        rowvector.clear();
        for(int j=0; j<COL; j++)
            rowvector.push_BACk(i*COL+j+1);
        array2.push_BACk(rowvector);
    }
    return 0;
}

我的问题是:还有其他方法可以定义2D数组吗?哪一个是最有效率的?谢谢!

解决方法

没有没有明确地操纵内存(malloc / freE).如果使用静态分配的数组(第一个示例),则在编译时分配空间,因此在运行时不能添加更多行或列.

第二个例子使用std :: vector隐藏你的动态内存分配.这样,您最终可以在运行时添加更多行或列.

如果您不需要动态修改数组维度,那么第一个解决方案是更简单和更快捷的解决方案(即使我认为std :: vector实现足够快,可以与静态数组相媲美,更优雅和更面向对象).

如果您需要在运行时使用std :: vector修改数组维度,因为它可以节省您直接处理malloc和free.

大佬总结

以上是大佬教程为你收集整理的如何在没有内存操作的情况下在C和STL中定义2D数组?全部内容,希望文章能够帮你解决如何在没有内存操作的情况下在C和STL中定义2D数组?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。