C++问题,帮帮忙!!!!!

lc79 2001-07-15 11:13:11
各位帮帮忙解答下这个题,我想了好久都没想出来!!!!先谢了

假定用一维数组a [ 0 :s i z e - 1 ]来存储一组元素。如果有n 个元素,可以把它们存储在a [ 0 ] , . . . , a [ n - 1 ]中。当n 超过s i z e 时,数组将不足以存储所有元素,必须分配一个更大的数组。类似地,如果元素的数目比s i z e 小很多,我们又可能希望减少数组的大小,以便释放出多余的空间为其他地方所用。试编写一个模板函数C h a n g e S i z e 1 D 把数组a 的大小从s i z e 变成To S i z e 。函数首先应该分配一个新的、大小为To S i z e 的数组,然后把原数组a 中的n 个元素复制到新数组a 中,最后释放原数组a 所占用的空间。


...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
littleme741 2001-07-16
  • 打赏
  • 举报
回复
看看MFC中关于CArray实现的原代码就可以了,它的代码很详细的说明了空间的reallocate问题。
shinesun 2001-07-16
  • 打赏
  • 举报
回复
节约空间是很重要的,一般的做法是首先定义一个字符指针,先不要定义分配多大的空间,而在你知道空间大小以后,才开始分配空间给他,你可以写:
char *str;

函数名(int n)
{
str=new char(n-1);
}
skymost 2001-07-16
  • 打赏
  • 举报
回复
use vector
柯本 2001-07-16
  • 打赏
  • 举报
回复
c++有很多这样的EX,多看看书就有了!
  • 打赏
  • 举报
回复
使用stl vector
xuliye 2001-07-15
  • 打赏
  • 举报
回复
你写的数组元素分配空间在函数的栈里,函数不返回是没法释放的。
你的情况可以用堆阵动态分配内存。用malloc(...) 和 realloc(...) 可以自动实现。
用new 和 delete 就要自己写了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧