最近在帮朋友解C++的问题,常常动不动就手痒用LinkedList存东西
应该是C#的List<T>太方便,用太多的后遗症
但是C++的东西都要自己亲自写(我知道是有套件,但是用起来也是麻烦,干脆自己写)
辛苦实作之余,我不禁想了想,C#的List<T>底层到底都是怎么实作的呢?
从资料结构的课程来分析,
资料存放的方式有两大种,阵列和串行,
阵列的优点是存取各项目非常方便迅速,缺点则是增减项目非常麻烦,
串行则刚好颠倒过来
而List<T>可以用像阵列一样直接用index存取每个项目,
但增删项目似乎也只需要简单的调用方法就好(Add、Remove)
整个看起来就是Magic (?)
不过看过MSDN之后,发现List<T>好像来源跟ArrayList差不多,
所以List<T>是基于阵列的架构下实作的结构吗?
那又是怎么克服增删项目的困难呢?
(莫非看起来很简单的方法,底层其实是一堆脏码吗?)
因为实在想不明白,就上来问问各位前辈