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 只使用一次的函式物件,能否不要專門為其編寫乙個類?只呼叫一次的簡單函式,能否在呼叫時才寫出其函式體?形式 外部變數訪問方式說明符 參數列 返回值型別語句組 外部變數訪問方式說明符形式 可...