程式設計技巧與C 11特性 總結

2021-08-29 07:58:24 字數 1233 閱讀 5921

c ++的排序函式有兩種用法:

傳入乙個functor物件;

直接傳入乙個排序函式。

#include #include #include using namespace std;

#define rep(i,a,b) for(int i =(a);ia != t2->a) return t1->a - t2->a;

if(t1->b != t2->b) return t1->b - t2->b;

return t1->c - t2->c;

}struct cmpfunctor

};ts tss[n];

void gendata()

}int main()

根據結果​​,我們可以發現傳入functor比直接使用函式更快,在我的環境中並沒有很明顯(mingw)(然而在作者的環境中,排序由functor是最快的,g ++ 4.8.0)。

使用內聯的,目的是為了提高函式的執行效率,「用函式內聯取代巨集」(注意是定義而非宣告)。

很明顯,類的內聯函式也是乙個真正的函式

,編譯器

在呼叫乙個內聯函式時,會首先檢查它的引數的型別,保證呼叫正確。然後進行一系列的相關檢查,就像對待任何乙個真正的函式一樣。這樣就消除了它的隱患和侷限性

。inline可以作為某個

類的成員函式

,當然就可以在其中使用所在類的保護成員及私有成員。

inline int max(int a, int b)

//則呼叫:

coutx

}vectorvc;

vc.push_back(readint());

用clion的話因為有自動補全,並沒有感受到敲**效率有多大的提公升,但是如果使用比較原始的編譯器的話,效率會大大提公升。

#define _for(i,a,b) for(int i = (a); i

#define _rep(i,a,b) for(int i = (a); i<=(b); ++i)

//使用方法

vector b;

_for(i,1,a.size()){}

#暫時先發布著,日後再

C 11 新特性總結

vs2012以上版本支援 一.auto的使用 auto func less 自動表示函式指標 auto ite vector a.begin 自動表示stl的迭代器 auto p new foo 自動表示變數指標等變數 二.decltype int x 3 decltype x y x 從變數或表示...

C 11 實用特性總結

c 11新引入的auto是乙個十分好用的特性,它的用途主要是自動型別推斷和返回值佔位。自動型別推斷 auto可以從表示式中推斷出 返回值型別 這裡一定要有乙個具體的表示式,然後根據表示式計算出結果,將結果返回給auto型別的變數。int main auto的自動型別推斷有兩個顯著優點,其一是可以省去...

C 11 實用新特性總結

template classt1,class t2 auto add t1x,t2 y decltype x y 只使用一次的函式物件,能否不要專門為其編寫乙個類?只呼叫一次的簡單函式,能否在呼叫時才寫出其函式體?形式 外部變數訪問方式說明符 參數列 返回值型別語句組 外部變數訪問方式說明符形式 可...