以前有個哥們好像寫過類似的文章。當時沒有注意,今天才發現有時候sort時候真會帶來麻煩。說說我遇到的麻煩:
我需要監控乙個機器的狀態,得到的資料類似:
1-prd 8:30:00
2-std 8:30:00
3-prd 9:30:00
4-std 9:31:00我把資料都放在乙個list容器裡面,同時stateitem實現了icomparable介面,是datetime來排序。其實資料過來時候也是按照時間來排序,但是我仍然做了sort操作。
結果問題出現了,我出來的統計報表跟以前跑的報表由差距。
prd time : (2)-(1)+(4)-(3) = 1 min
std time : (3)-(2) = 1 hour
結果排序後,資料順序成了(1)和(2)調換了,
1-std 8:30:00
2-prd 8:30:00
3-prd 9:30:00
4-std 9:31:00prd time : (4)-(2) = 1 hour +1min
std time : 0
結果大相徑庭。 :(
總結:排序的時候要考慮到相同rank的情況。
另外一種情況是由於比較數接近造成的問題
int icomparable.compareto( stateitem item)
好像沒有錯。但請考慮當totalminutes<1為小數的情況,則無法判斷兩個物件的次序。
ok,轉成
return this.datetime.ticks.compareto(item.datetime.ticks);
enn….
關於排序的介面有2個:
1 icomparable
子項完成。
2. icomparer
容器完成
除此,sort支援直接呼叫方法
listexample.sort(method1);
public int method1(item x, item y)
c shared ptr使用的幾點注意
先介紹一下shared ptr.是c 為了提高指標安全性而新增的智慧型指標,方便了記憶體管理。功能非常強大,非常強大,非常強大 不單單是shared ptr,配合week ptr以及enable share from this 以及share from this 對於支援智慧型指標的c 版本程式設計...
ijg庫的使用的幾點注意
使用vs中個nmake 進行編譯,對於這個版本的庫,在編譯的時候需要注意這幾個點 1.可以在cmd中使用命令進行編譯 前提是,將 nmake的路徑配置到環境變數中path下了 形如 設定三個變數 變數名 變數值 設定好這些變數之後,nmake就可以在cmd中使用了.進入到ijg原始碼資料夾中,然後執...
iptables使用中幾點注意的問題
iptables共有3張表 filter,nat,mangle,用 t name選擇。filter是預設表,有input,output,forward三條鏈 nat在資料報建立新連線的時候用,有prerouting,postrouting,output三條鏈 mangle在資料報改變時使用,有pre...