二维变长数组

/*
 * 数组内元素的位置是不变的,只是数组容量的大小发生了变化。
 * 简单来说,就是将数组的左上角元素平移到新数组的相同位置。
 * 
*/
template<class T>
void changeLength2D(T**& a,int oldRows
                     int copyRows,int copyColumns,
                     int newRows,int newColumns)
{
    if(copyRows > newRows || copyColumns > newColumns)
        throw illegalParameterValue("new dimensions are too small");

    T** temp = new T*[newRows];
    for(int i = 0;i < newRows;i++)
        temp[i] = new T[newColumns];

    //将元素从旧空间迁移到新空间,并释放旧空间
    for(int i = 0;i< copyColumns;i++)
    {
        copy(a[i],a[i]+copyColumns,temp[i]);
        delete [] a[i];
    }

    for(int i = copyRows;i< oldRows;i++)
        delete [] a[i];

    delete [] a;
    a = temp;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python编写只允许实例化一个对象的类

>>> class T: __total = 0 def __init__(self, value): if T.__total != 0: r...

3378
来自专栏积累沉淀

Java类加载原理机制

1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示: ? 1...

25610
来自专栏zlmai的专栏

理解PHP的延迟静态绑定

static::中的static其实是运行时所在类的别名,并不是定义类时所在的那个类名。这个东西可以实现在父类中,能够调用子类的方法和属性。

2202
来自专栏Android机动车

java内部存储简述

在实际项目中,会涉及到很多大量数据的访问,存储或者是计算,这个时候如果可以用合适的容器来存储这些数据,就会达到事半功倍的效果,也就是说,当你的程序遇到瓶颈的时候...

1413
来自专栏Python

Python2和Python3的一些语法区别

Python2和Python3的一些语法区别 python 1.print 在版本2的使用方法是: print 'this is version 2 也可以是...

2298
来自专栏软件开发 -- 分享 互助 成长

C/C++中static关键词的作用

1、在函数体内的static变量作用范围是该函数体,其只被内存分配一次,所以在下次调用的时候会保持上一次的值。 2、模块内的static全局变量可以被模块内的所...

1878
来自专栏西枫里博客

Python学习笔记九(变量作用域及内置函数和闭包函数)

在上次的学习中,初步认识了Python的自定义函数方式及变量参数。那么编程中的局部变量和全局变量应该是大多数语言的标配。Python中如果定义局部变量和全局变量...

832
来自专栏swag code

多线程的实现方法

      从Thread类中实例化的对象即代表线程,启动一个线程就是建立一个Thread实例。因为完成线程真正功能的代码放在类的run()方法中,所以可以将线...

612
来自专栏我是攻城师

关于Java里面的字符串常量池的介绍和优化

上一篇文章提到我们在java里面不是通过new创建的string字符串会被放到一个叫字符串常量池的地方,那么本篇文章我们就来详细的了解下常量池的相关知识。

1324
来自专栏数据结构与算法

1750:全排列

1750:全排列 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 给定一个由不同的小写字母组成的字符串,输出这个字符串的所...

37114

扫码关注云+社区

领取腾讯云代金券