用彙編的眼光看C (之泛型程式設計)20

2022-03-24 15:23:51 字數 2408 閱讀 6329

[cpp]view plain

copy

void

bubble_sort(

intarray, 

intlength)  

}  }  return

;  }  

如果把資料型別改成通用的資料型別,你需要做什麼呢?兩個:(1)算術符"="過載;(2)比較函式。下面就是乙個設計的class型別。

[cpp]view plain

copy

class

type  

type(type& t)   

~type() {}  

type& operator=(type& t)   

intget_data()   

};  

那麼,比較函式呢?我們可以用乙個全域性函式代替。

[cpp]view plain

copy

inttype_compare(type& t1, type& t2)  

至此所有的函式都已經修改好了,那麼bubble_sort的函式也要修改吧,我們看看應該怎麼做?

[cpp]view plain

copy

template

<

typename

data>  

void

bubble_sort(data array, 

intlength, 

int(*compare)(data& , data& ))  

}  }  return

;  }  

眼看著**都已經使用好了,那下面應該看看怎麼使用了。可以看看下面的**:

[cpp]view plain

copy

272:      type t[2] = ;  

0040148d   push        2  

0040148f   lea         ecx,[ebp-14h]  

00401492   call        @ilt+25(type::type) (0040101e)  

00401497   mov         dword ptr [ebp-4],0  

0040149e   push        1  

004014a0   lea         ecx,[ebp-10h]  

004014a3   call        @ilt+25(type::type) (0040101e)  

004014a8   mov         byte ptr [ebp-4],1  

273:      bubble_sort(t, 2, type_compare);  

004014ac   push        offset @ilt+20(type_compare) (00401019)  

004014b1   push        2  

004014b3   lea         eax,[ebp-14h]  

004014b6   push        eax  

004014b7   call        @ilt+50(bubble_sort) (00401037)  

004014bc   add         esp,0ch  

274:      return

;  004014bf   mov         byte ptr [ebp-4],0  

004014c3   lea         ecx,[ebp-10h]  

004014c6   call        @ilt+5(type::~type) (0040100a)  

004014cb   mov         dword ptr [ebp-4],0ffffffffh  

004014d2   lea         ecx,[ebp-14h]  

004014d5   call        @ilt+5(type::~type) (0040100a)  

275:  }  

我們看到了,簡單的排序已經完成了,函式最終會呼叫bubble_sort函式。泛型雖然複雜,涉及到了函式指標、算術符過載、模板函式等知識,但是只要勇於嘗試,就會使用越來越方便,越來越順手。

問題:

(1) 大家可以嘗試編寫乙個insert_sort的泛型函式?

(2)嘗試編寫乙個二分法的泛型處理函式?

(3)嘗試編寫乙個quick_sort的泛型函式,可能考慮的因素需要多一些?不過也可以嘗試一下哦。

【預告: 下面的部落格會寫一些 關於class技巧的文章】

用彙編的眼光看C (之嵌入彙編)

嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編 1 提高 的工作效率 使用到cpu的一些特殊指令,比如說mmx指令 2 對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的 中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實...

用彙編的眼光看C (之嵌入彙編)

嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編 1 提高 的工作效率 使用到cpu的一些特殊指令,比如說mmx指令 2 對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的 中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實...

用彙編的眼光看C (之嵌入彙編)

嵌入式彙編是對純彙編檔案的一種有益補充。通常會有下面幾種情況使用到彙編 1 提高 的工作效率 使用到cpu的一些特殊指令,比如說mmx指令 2 對硬體進行某種特殊的操作,比如說關中斷等,這在核心級的 中是比較常見的。但是我們講究嵌入式彙編的一些基本點和大家一起討論一下,建議大家和我一起做實驗,用事實...