直接插入排序,一般實現都是對int型資料進行排序,如果我需要對double陣列、string陣列呢?
下面是乙個利用void指標進行的型別無關插入排序
**:#include
#include//malloc
#include//memcpy
#include
#include//iterator_traits
using std::endl;
using std::cout;
using std::string;
using std::vector;
bool intless(void *x, void *y)
bool doubleless(void *x, void *y)
bool stringless(void *x, void *y)
void insertsort(void *arr, //待排序陣列
const int length, //陣列長度
const size_t elemsize, //數字元素大小
bool (*less)(void *, void *))
memcpy((char*)arr + (j+1) * elemsize,
elemtoinsert, elemsize);
}free(elemtoinsert);
}template
void displayarr(const iterator &beg, const iterator &end)
int main(int argc, char **ar**);
double doublearr = ;
string stringarr = ;
cout<<"排序前:"<
displayarr(intarr, intarr + sizeof(intarr)/sizeof(*intarr));
displayarr(doublearr, doublearr + sizeof(doublearr)/sizeof(*doublearr));
displayarr(stringarr, stringarr + sizeof(stringarr)/sizeof(*stringarr));
//開始插入排序
insertsort(intarr, sizeof(intarr)/sizeof(*intarr), sizeof(int), intless);
insertsort(doublearr, sizeof(doublearr)/sizeof(*doublearr), sizeof(double), doubleless);
insertsort(stringarr, sizeof(stringarr)/sizeof(*stringarr), sizeof(string), stringless);
cout<<"\n排序後:"<
displayarr(intarr, intarr + sizeof(intarr)/sizeof(*intarr));
displayarr(doublearr, doublearr + sizeof(doublearr)/sizeof(*doublearr));
displayarr(stringarr, stringarr + sizeof(stringarr)/sizeof(*stringarr));
}
利用void指標實現無視型別排序
直接插入排序,一般實現都是對int型資料進行排序,如果我需要對double陣列 string陣列呢?下面是乙個利用void指標進行的型別無關插入排序 include include malloc include memcpy include include iterator traits using...
void型別及void指標型別
許多初學者對c c 語言中的void及void指標型別不甚理解,因此在使用上出現了一些錯誤。本文將對void關鍵字的深刻含義進行解說,並詳述void及void指標型別的使用方法與技巧。2.void的含義 void的字面意思是 無型別 void 則為 無型別指標 void 可以指向任何型別的資料。vo...
void及void指標型別
1.概述 許多初學者對c c 語言中的void及void指標型別不甚理解,因此在使用上出現了一些錯誤。本文將對void關鍵字的深刻含義進行解說,並 詳述void及void指標型別的使用方法與技巧。2.void的含義 void的字面意思是 無型別 void 則為 無型別指標 void 可以指向任何型別...