作者ciphero (奶油焗蛋餃...:))
看板C_and_CPP
標題[問題] 關於 bsearch() 的 comparator
時間Sat Feb 27 12:54:50 2010
使用過 C 的 bsearch() 的人,應該都知道它的原型長這樣:
void * bsearch (const void * key, const void * base, size_t num,
size_t size, int (* comparator) ( const void *, const void * ) );
意義上還蠻簡單的:
在一個有 num 個元素,每個元素大小為 size 的陣列 base 中,尋找有 key 的元素
在這裡我想要問的問題是有關 comparator 這個東西:
不就是比較兩個 key 值相不相等而已,何必另外多一個 comparator 當作參數?
這實在是想不透啊~~~@@~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.77.58
推 loveme00835:因為丟進去的資料型態是void*, 比較的時候必須要轉回 02/27 13:00
→ loveme00835:正確的型態作處理, 而且必須提供三種回傳值, 這是你的 02/27 13:01
推 VictorTom:bsearch是binary search, 所以不只單純比較key相等而已. 02/27 13:33
→ VictorTom:詳情請去看一下binary search的演算法@_@" 02/27 13:33
→ VictorTom:另外, 它可以用來search任何自定的type, 你不給它 02/27 13:34
→ VictorTom:compare function, 它也不知道怎麼幫你比較:) 02/27 13:35
推 DJWS:也許陣列是由大排到小。也許陣列的資料不是基本的變數型態。 02/28 15:02
推 sunneo:以上推文都可以當作參考 03/01 00:13