最近在幫朋友解C++的問題,常常動不動就手癢用LinkedList存東西
應該是C#的List<T>太方便,用太多的後遺症
但是C++的東西都要自己親自寫(我知道是有套件,但是用起來也是麻煩,乾脆自己寫)
辛苦實作之餘,我不禁想了想,C#的List<T>底層到底都是怎麼實作的呢?
從資料結構的課程來分析,
資料存放的方式有兩大種,陣列和串列,
陣列的優點是存取各項目非常方便迅速,缺點則是增減項目非常麻煩,
串列則剛好顛倒過來
而List<T>可以用像陣列一樣直接用index存取每個項目,
但增刪項目似乎也只需要簡單的調用方法就好(Add、Remove)
整個看起來就是Magic (?)
不過看過MSDN之後,發現List<T>好像來源跟ArrayList差不多,
所以List<T>是基於陣列的架構下實作的結構嗎?
那又是怎麼克服增刪項目的困難呢?
(莫非看起來很簡單的方法,底層其實是一堆髒碼嗎?)
因為實在想不明白,就上來問問各位前輩