看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我在網路上找的iterator的範例幾乎長這樣的 list<char>::iterator it; for( it = my_list.begin(); it != my_list.end(); ++it ) { cout << *it; } 想知道有沒有方法不用讓他一直跑迴圈,直接取用list內的東西,例如像這樣的 it = it + sizeof(list<char>) * n (我很天真地打過這行 XD) 總之就是可以像陣列 array[2] 這樣直接用他的值。 PS. 這行compiler結果是error: no match for 'operator+' in 'it + 32ul' 開發平台: Linux -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: chenroseyaks 來自: 140.123.22.26 (07/17 19:03)
joefaq:你想想看LinkList的特點就知道了 07/17 19:07
TsinTa:想直接存取的話,你可以考慮改用vector 07/17 19:14
mantour:你想快速的隨機存取就用vector 07/17 19:16
mantour:想快速的insert/erase或搬動整個block就用list 07/17 19:17
mantour:有一好沒二好,這是container背後的資料結構的問題 07/17 19:17
loveme00835:advance 可以達成你的要求, 不過時間複雜度是線性的 07/17 19:26
softwind:www.sgi.com/tech/stl/RandomAccessContainer.html 07/17 22:32
chenroseyaks:謝謝,我再試試看 07/17 23:05
avhacker:可以用 std::advance(it, n); 07/18 00:28
yayarice:可以寫個物件繼承List再自己重載撰寫operator[] 07/19 00:18
yayarice:不過時間依然是線性的 只是code寫起來比較爽 07/19 00:18
loveme00835:回樓上, 你沒有考慮到 public 繼承帶來的問題 07/19 00:19
hilorrk:最好不要public繼承STL... 07/19 00:23