[問題] 小型資料的儲存與搜尋 用map? vector?

看板C_and_CPP (C/C++)作者 (呦厚厚)時間13年前 (2013/03/15 01:32), 編輯推噓1(1013)
留言14則, 5人參與, 最新討論串1/1
如果是大型資料的儲存和搜尋 用map 當然是應該的 但是如果我只是小的資料呢??? 確定一定不會超過 50筆 甚至大部分的時間可能都小於10筆 那還有需要用 map嗎? 我在想 map 畢竟是樹狀 本身的成本應該比vector高很多 而 vector是連續性記憶體 所以以搜尋來講 如果是小型的資料 可能根本沒什麼負擔 說不定比 map 的 cp值還高? 或著甚至可以用 list ? 因為資料可能常常會增加刪除 對 vector 來講有點負擔 再加上 vector 會預先佔用一大塊記憶體 所以如果是小型的資料 可能list的 cp值 比 vector 更高? 或著其實因為資料很少 所以可能用什麼都沒差 高興就好? 甚至乾脆用陣列 一開始就new個50筆 不要用stl了? 不過因為是寫server的功能 雖然是一筆很小的資料 但每個使用者身上都會有一筆這個資料 而同時間可能有幾千個使用者 怕會遇到高峰的階段 所以還是要稍微計較一下 XD 請問一下 通常大家是幾筆以上的資料 才會考慮用 map來處理? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.195.17 ※ 編輯: yhn0tgb60 來自: 220.135.195.17 (03/15 01:34)

03/15 01:52, , 1F
我自己是幾萬~幾十萬以上用map @@ 不過有 unordered_map~!
03/15 01:52, 1F

03/15 01:57, , 2F
理論上常常會新增刪除要 list
03/15 01:57, 2F

03/15 01:58, , 3F
但是個人認為資料量 < 10000 筆 int,用 vector 比較快
03/15 01:58, 3F

03/15 01:58, , 4F
知道資料量一定小於 50 可以寫 myVector.reserve(50);
03/15 01:58, 4F

03/15 02:00, , 5F
如果是你最後所述 用map大概會慢非常多..(幾千*50的話)
03/15 02:00, 5F
我的想法是 使用者名單用 map 使用者的資料用 vector 這樣也會很慢嗎?

03/15 03:15, , 6F
想請問一下 unordered_map是c11才有的樣子 如果不想讓map
03/15 03:15, 6F

03/15 03:17, , 7F
自動排序 有什麼好方法? 或是使用vector< <pair( , ) > >
03/15 03:17, 7F

03/15 03:18, , 8F
這種形式效能上ok嗎 想說這樣要存的話還要make pair
03/15 03:18, 8F
※ 編輯: yhn0tgb60 來自: 202.39.44.125 (03/15 10:49)

03/15 21:59, , 9F
那還可以吧XD 不過不需要限定有序的話我還是會選hash
03/15 21:59, 9F

03/16 01:32, , 10F
資料少何必在意快慢?
03/16 01:32, 10F
其實我做的是即時的網路遊戲 所以server可能每秒需要搜尋個好幾百次甚至千次 所以還是要小心一點

03/16 10:21, , 11F
資料很少又要大量搜尋或許可以考慮自己hash
03/16 10:21, 11F

03/16 10:21, , 12F
不過我也覺得50筆這種數字應該不用太擔心
03/16 10:21, 12F

03/16 10:22, , 13F
我個人是一萬筆以下都不會特別去想用哪個比較好..|||
03/16 10:22, 13F

03/17 11:07, , 14F
那就放客端嘛
03/17 11:07, 14F
為了資料安全和防作弊 有些資料 只有server端才有 有些比較沒關係的資料 可以放client端 當client認為需要改變時 再送給server作驗證處理 但有些東西 就真的不能放client端 只能server端 每秒不斷的作搜尋判斷 ※ 編輯: yhn0tgb60 來自: 202.39.44.125 (03/18 17:07)
文章代碼(AID): #1HGWd7b8 (C_and_CPP)
文章代碼(AID): #1HGWd7b8 (C_and_CPP)