在c++/c#/java没实现泛型之前,怎么存储可变数目的对象的?

ℌ𝔢𝔶𝔦𝔱𝔰𝔅𝔩𝔞𝔡𝔢ℜ𝔲𝔫𝔯-avatar

ℌ𝔢𝔶𝔦𝔱𝔰𝔅𝔩𝔞𝔡𝔢ℜ𝔲𝔫𝔯

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彻底被墙了,我上不去。。
擴音0-avatar

擴音0

不是直接malloc申请内存吗
darksnowman-avatar

darksnowman

可变数目和范性有什么关系?

数组如果不确定长度就用 List 好了
azzone4-avatar

azzone4

泛型跟变长容器有啥关系啊。。。
El Matador-avatar

El Matador

java用list
silverr-avatar

silverr

泛型指的是不确定具体类型,和长度有啥关系……
DracaryS-avatar

DracaryS

list底层也是基于数组的,自动扩容。
另外泛型不是list啊。
staples-avatar

staples

[s:ac:哭笑]就自己写个自动扩容呗
sankyuppa-avatar

sankyuppa

c是靠molloc一个空间,给结构体指针,然后组成链表
sankyuppa-avatar

sankyuppa

[quote][pid=544869713,28237840,1]Reply[/pid] Post by [uid=1308577]methuss[/uid] (2021-08-26 22:41):

泛型指的是不确定具体类型,和长度有啥关系……[/quote]他的意思是这种类型可以add成任意数量的list吧 。
Krafty_Veteran-avatar

Krafty_Veteran

[url]https://www.bilibili.com/video/BV1iX4y1w7x4[/url] 这个讲手搓vector的,我还没看完,你可以看看,也许有帮助
Librainiac-avatar

Librainiac

javascript数组可以存42.9亿个元素。
scrub tier-avatar

scrub tier

想办法呗,c++和java的东西终归是C实现的
banditunknown-avatar

banditunknown

你这个和泛型有什么关系啊,这就是最基本的数据结构啊
Lasuf-avatar

Lasuf

申请一块更大的然后转移过去,只要你的容量指数增长,就是amortized O(1)
十一-avatar

十一

泛型和数组长度有啥关系[img]http://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
ydhiz-avatar

ydhiz

1. c里面用*alloc在指针后面动态申请
2. 这跟泛型八杆子打不着
ℌ𝔢𝔶𝔦𝔱𝔰𝔅𝔩𝔞𝔡𝔢ℜ𝔲𝔫𝔯-avatar

ℌ𝔢𝔶𝔦𝔱𝔰𝔅𝔩𝔞𝔡𝔢ℜ𝔲𝔫𝔯

Reply to [pid=544870360,28237840,1]Reply[/pid] Post by [uid=375444]ghost2006[/uid] (2021-08-26 22:44)没有谷歌给js续命,或者flash都死不了
Averymmm-avatar

Averymmm

泛型的基础是模板啊[s:ac:哭笑]
c的时候就有可变长数组了。至于cpp的vector吗,主要是先预先申请一块内存,当快满的时候在申请一块更大的内存,把原来的内容copy过去[s:ac:哭笑]
建议看看侯捷老师的stl课程,你会有更多的理解[s:ac:哭笑]
THEORIGINOFBOB-avatar

THEORIGINOFBOB

你自己也可以实现一个变长的数组,憋直接访问地址,一切都包装在方法里。
内部实现就是先分配一块空间,不够了在分配一块更大的,把旧的数据整体搬过去,旧的空间回收掉。
我看过std的vector就是这么实现的。