ℌ𝔢𝔶𝔦𝔱𝔰𝔅𝔩𝔞𝔡𝔢ℜ𝔲𝔫𝔯
2021-08-22T14:27:39+00:00
以c#为例,比如 .net framework 2.0就不支持system.collections.generic ,那么我设了个int[500],万一要存1000个int,那么要怎么改?
。。好像是用arraylist解决。。说错了,.net 2.0就支持泛型了。我几乎没用过arraylist,所以不知道这个。
没事,只是int[]不能add而arraylist可以,然后我脑子短路了而提出了这个问题
v2彻底被墙了,我上不去。。
可变数目和范性有什么关系?
数组如果不确定长度就用 List 好了
list底层也是基于数组的,自动扩容。
另外泛型不是list啊。
c是靠molloc一个空间,给结构体指针,然后组成链表
[quote][pid=544869713,28237840,1]Reply[/pid] Post by [uid=1308577]methuss[/uid] (2021-08-26 22:41):
泛型指的是不确定具体类型,和长度有啥关系……[/quote]他的意思是这种类型可以add成任意数量的list吧 。
[url]https://www.bilibili.com/video/BV1iX4y1w7x4[/url] 这个讲手搓vector的,我还没看完,你可以看看,也许有帮助
你这个和泛型有什么关系啊,这就是最基本的数据结构啊
申请一块更大的然后转移过去,只要你的容量指数增长,就是amortized O(1)
泛型和数组长度有啥关系[img]http://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
1. c里面用*alloc在指针后面动态申请
2. 这跟泛型八杆子打不着
Reply to [pid=544870360,28237840,1]Reply[/pid] Post by [uid=375444]ghost2006[/uid] (2021-08-26 22:44)没有谷歌给js续命,或者flash都死不了
泛型的基础是模板啊[s:ac:哭笑]
c的时候就有可变长数组了。至于cpp的vector吗,主要是先预先申请一块内存,当快满的时候在申请一块更大的内存,把原来的内容copy过去[s:ac:哭笑]
建议看看侯捷老师的stl课程,你会有更多的理解[s:ac:哭笑]
你自己也可以实现一个变长的数组,憋直接访问地址,一切都包装在方法里。
内部实现就是先分配一块空间,不够了在分配一块更大的,把旧的数据整体搬过去,旧的空间回收掉。
我看过std的vector就是这么实现的。