STL的問題

Home Home
引用 | 編輯 oven425
2009-05-26 15:57
樓主
推文 x0
請問各位大大
假設說我有三個
vector<int>a
vector<int>b
vector<CString>
vector<CRect>
四個vector
..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 WindinCloud
2009-06-11 00:10
1樓
  
我覺得你應該是要考慮資料的封裝性而不是效能(其實我不懂你是想要要求啥效能)

舉例來說 你有下面這些資料

姓名   國文分數   英文分數
=================
a       100       40
b       30         30
c       50         80

若你分開排的話那你會變成
姓名   國文分數   英文分數
=================
a       30       30
b       50       40
c       100       80

這樣應該不是你要的吧~
所以要是資料有相關的~ 請優先考慮封裝性

接下來討論效能問題
你是想討論排序速度嘛?
若是的話
那來看看它的分析
若採用比較的方式來做為你演算法基礎的話
你最快大概就是quick sort => O(nlgn)
你獨立去排序
那就會是m*O(nlgn) m表你要排的資料項目數

若你封裝後對它排序,每個項目都要排到
那還是m*O(nlgn) m表你要排的資料項目數

所以效能來說沒變~
但是整體結果~ 後者應該會比前者正確

在來比較記憶體使用
封裝與不封裝差在哪?
我想應該就是記憶體內對齊的問題(這太深了不予討論)
不過一般來說也不會大過幾個byte
以現在RAM這樣大~
封裝比不封裝頂多差上n*b個byte b表示對齊後與不封裝相差的byte數
所以這也可以不用看了~

所以結論
請先看 "資料封裝性" 先

獻花 x0
引用 | 編輯 oven425
2009-06-11 22:02
2樓
  
感謝大大個回覆
我之前的確觀念是偏頗了
我會好好的再想想看

獻花 x0