游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2331|回复: 6

有一个关于动态储存的一维数组问题

[复制链接]

14

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2007-3-28 16:38:00 | 显示全部楼层 |阅读模式
     7. 假定用一维数组a [ 0:s i z e - 1 ]来存储一组元素。如果有n个元素,可以把它们存储在
a[0],...,a[n-1]中。当n超过size时,数组将不足以存储所有元素,必须分配一个更大的数组。类
似地,如果元素的数目比size小很多,我们又可能希望减少数组的大小,以便释放出多余的空
间为其他地方所用。试编写一个模板函数ChangeSize1D把数组a的大小从size变成ToSize。函数
首先应该分配一个新的、大小为ToSize的数组,然后把原数组a中的n个元素复制到新数组a中,
最后释放原数组a所占用的空间。上机测试该函数。
   

万分感激

14

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2007-3-28 16:48:00 | 显示全部楼层

Re:有一个关于动态储存的一维数组问题

我的思路是a[0到size-1]的元素中,定义大了需要自动释放空间,定义小了要增加空间,可以用数组
template<class T>
T *x
x=new T[size]
x[size-1]...
释放用delete []x
x=0  但是不知道如何做函数的形式参数,2维数组知道可以用 void ...(T**&x....)
一维数组实在不清楚啊
小弟有个不情之请,就是能不能讲的稍微详细一点

8

主题

46

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2007-3-28 18:25:00 | 显示全部楼层

Re:有一个关于动态储存的一维数组问题

看看stl的容器吧...要你实现的就是这个

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2007-3-29 10:25:00 | 显示全部楼层

Re:有一个关于动态储存的一维数组问题

template< class T >
void ChangeSize1D( T *arrA, int fromSize, int toSize)
{
    ASSERT(toSize > 0);
    ASSERT(fromSize > 0);
    ASSERT(arrA != NULL);
   
    T *newArray = new T[toSize];
    int copySize = fromSize > toSize ? toSize : fromSize;
    memcpy(newArray, arrA, copySize);
    delete []arrA;
    arrA = newArray;
}

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-3-29 14:54:00 | 显示全部楼层

Re:有一个关于动态储存的一维数组问题

implement the std::vector yourself or just use it

14

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2007-3-29 15:17:00 | 显示全部楼层

Re:有一个关于动态储存的一维数组问题

太感谢tarkey
了....能不能加小弟的QQ:249041426

25

主题

304

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
发表于 2007-3-30 18:25:00 | 显示全部楼层

Re:有一个关于动态储存的一维数组问题

template< class T >
void ChangeSize1D( T *arrA, int fromSize, int toSize)
{
    ASSERT(toSize > 0);
    ASSERT(fromSize > 0);
    ASSERT(arrA != NULL);
   
    T *newArray = new T[toSize];
    int copySize = fromSize > toSize ? toSize : fromSize;
    memcpy(newArray, arrA, copySize);
    delete []arrA;
    arrA = newArray; // 这里这么写,newArray传不出去..
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-4-13 00:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表