當前位置:才華齋>計算機>C語言>

C語言中根據成員變數來排序的方法

C語言 閱讀(2.19W)

類的成員變數和普通變數一樣,也有資料型別和名稱,佔用固定長度的記憶體空間。但是,在定義類的時候不能對成員變數賦值,因為類只是一種資料型別,本身不佔用記憶體空間,而變數的值則需要記憶體來儲存。下面是小編為大家搜尋整理的C語言中根據成員變數來排序的方法,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

C語言中根據成員變數來排序的方法

1 //針對類中某一物件比較'<'

2 template

3 struct lt_pred{

4 lt_pred(V T::*_pm){pm=_pm;}

5 V T::*pm;

6 bool operator()(const T& a, const T& b){

7 return a.*pm < b.*pm;

8 }

9 };

10

11 template

12 lt_pred

13 return lt_pred

14 }

15

16 //sort(ha,ha+3, create_lt_pred(&hasintmember::a));

  【相關閱讀】

  C語言資料精度介紹

C語言一共只有32個關鍵字,9種控制語句,程式書寫形式自由,區分大小寫。把高階語言的基本結構和語句與低階語言的實用性結合起來。

軟體開發中我們經常遇到資料精度處理問題。

先看如下程式碼

#include #include #include

int main ( void )

{

char *s="0.100001200";

fprintf ( stderr, "%fn",atof(s));

return 0;

}

以上程式碼編譯後執行,結果如下:

$ 0.100001

$

問題出在哪裡,是 atof 函式的問題? 將 atof(s) 替換成 strtod(s,NULL) 後,結果依然如此。

經過測試,發現並非是 atof 或 strtod 函式轉換時精度丟失,而是 %f 的.格式化輸出符預設的輸出為小數點後面 6 位的精度。

我們將上面的程式碼修改為:

#include #include #include

int main ( void )

{

char *s="0.100001200";

fprintf ( stderr, "%18.10fn",atof(s));

return 0;

}

編譯後執行,結果如下

$ 0.100001200

$