C++模板中提供了sort方法,通常有兩種方法:傳遞函數,傳遞一個對象。ios
第一種方法:函數函數
bool compare(const string &strLeft, const string &strRight) { return strLeft<strRight; } int main() { vector<string> vtstrTest; vtstrTest.push_back(...); std::sort(vtstrTest.begin(),vtstrTest.end(),compare); return 0; }
注意:這裏的compare函數是全局函數,而不是成員函數。this
第二種方法spa
代碼以下:指針
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #include <vector> #include<algorithm> using namespace std; class SortTest { public: SortTest(){} void run() { VtSort(); } private: void VtSort(); struct SortDesc { bool operator() (const string &left, const string &right) { return left > right; } }; }; void SortTest::VtSort() { vector<string> vtTemp; vtTemp.push_back("abcef"); vtTemp.push_back("12348"); vtTemp.push_back("$#@!"); std::sort(vtTemp.begin(),vtTemp.end(),SortDesc()); for(int i =0; i<vtTemp.size(); ++i) { cout<<vtTemp[i]<<endl; } } int main() { SortTest test; test.run(); return 0; }
上面代碼的運行結果:code
abcef
12348
$#@!對象
注意,這裏不能sort中不能傳遞類的成員函數指針,而是傳遞的一個對象。由於C++模板獲取不到類的成員函數指針,類型成員函數指針都隱含了this指針。blog