看板 C_and_CPP 關於我們 聯絡資訊
各位大大好 小弟有一個疑問在心中許久 但是尚未解惑 想問問各位前輩 在我的觀念中 對於一般的陣列 我們在宣告之初就必須把陣列大小決定 這是陣列最大的限制 可以晚一點決定大小的方法也不過就是宣告一個陣列指標 等決定大小的時候再來new他 但是new了之後其陣列大小也是死的 不能動態變更 所以這時候 C++程設老師會教我們用vector 這樣就可以方便的pop與push變數 不用怕大小寫死 資料結構的老師會教我們linked list 說這樣就可以動態的配置記憶體 也不會有大小不夠的問題 那問題就來了 既然vector與linked list都可以克服陣列大小的問題 linked list相對比vector複雜且難寫許多 而且取出特定值的時候還必須用迴圈慢慢跑 vector就可以直接抓出來 那都用vector就可以了啊 所以小弟的問題就是 linked List到底還有什麼其他用途 使linked list如此重要呢? 感謝各位前輩解惑QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.243.14
twotwoone:學術探討用 10/26 22:44
QQ29:vector也不是這麼萬能 不夠用他還是會重配空間 10/26 22:49
akasan:如果物件copy很貴的話linked list是你的首選 10/26 22:51
akasan:不過大部分時間用vector還是比較方便 & 划算 10/26 22:52
akasan:且各個operation的成本也不太一樣 視情況而用吧 10/26 22:53
softwind:linked list 之後就是tree了阿 還沒有學到吧... 10/26 22:55
tinlans:資料結構上完應該就會知道了,各種操作的時間複雜度有差。 10/26 22:58
tinlans:考慮看看在第 N 個位置插入元素、取第 N 個元素的效率問題 10/26 22:59
yayarice:其實我已經上完資料結構了 我覺得tree算是指標應用 10/26 23:03
yayarice:如果把tree與圖也算linked list的一種 那我得到答案了 10/26 23:05
avhacker:原 PO 資料結構要重修 10/26 23:07
yayarice:我們資結很好過的 (茶 10/26 23:08
chchwy:linked list不是只有動態配置記憶體的優點而已 10/26 23:17
iamivers0n:你如果要大量在sequence前面插入物件呢? 10/26 23:18
chchwy:當資料需要大量的插入跟刪除 用vector就哭哭了 10/26 23:19
chchwy:而且STL除了vector也提供list, 說難寫實在是非戰之罪 10/26 23:21
james732:vector只是一個會幫你自動配置與搬家的array (吧) 10/26 23:22
holymars:要比難寫 stl container最難寫的應該是用rb-tree的map.. 10/27 00:16
netsphere:就像自己寫quick sort 跟 用qsort 10/27 11:17
BlackMatrix:vector裡面大小不夠會Resize, 時間使用特別多 10/29 05:37