动态变长数组如何实现

qjgdftxmu 2010-12-27 05:09:36
要求是这样。

每隔1s,给一个数组尾部赋值一个值。

这样在完全不知道数组会有多长的情况下,应该怎么样申请内存空间呢。

每隔1s给这个数组多一个内存空间吗?这个实现好像只能先删除之前申请的空间,然后申请新的空间,这样之前的数据还需要重新赋值,这样在数据较多时,效率会非常的低。

想问,应该如果实现这个功能呢?
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秦剑 2010-12-27
  • 打赏
  • 举报
回复
用CAarray就可以,CAarray是每次分配一块内存,应该是这样吧?
CAarray添加数据前先看现有的内存是否够,如果够则直接算出地址然后赋值,如果不够则另外分配一块内存并加一个链表中保存,然后再算出地址赋值。
不管是ATL还是STL都有类似的用法,C#中也是CList这种原理。
[Quote=引用 6 楼 qjgdftxmu 的回复:]

引用 3 楼 happyparrot 的回复:

你就用动态数组好了。CArray,CList都可以啊。


动态数组应该不行吧,随着时间的增加来增加的数组用动态数组应该会很麻烦。

CAarray我看了一下,应该是可以的。

CList我也有想过,只是觉得有些牛刀的感觉,所以问出来想学一些新的方法
[/Quote]
Allen_zhang 2010-12-27
  • 打赏
  • 举报
回复
不就是链表吗?用现有的类也行,自己写一个也可以
qjgdftxmu 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 happyparrot 的回复:]

你就用动态数组好了。CArray,CList都可以啊。
[/Quote]

动态数组应该不行吧,随着时间的增加来增加的数组用动态数组应该会很麻烦。

CAarray我看了一下,应该是可以的。

CList我也有想过,只是觉得有些牛刀的感觉,所以问出来想学一些新的方法
ai_at_china 2010-12-27
  • 打赏
  • 举报
回复
STL
jhayumu 2010-12-27
  • 打赏
  • 举报
回复
vector就可以了
快乐鹦鹉 2010-12-27
  • 打赏
  • 举报
回复
你就用动态数组好了。CArray,CList都可以啊。
用户 昵称 2010-12-27
  • 打赏
  • 举报
回复
realloc
Eleven 2010-12-27
  • 打赏
  • 举报
回复
STL中的vector就可以

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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