本例说明如何实现自定义谓词方法,使用std:sort排序较复杂数据。
#include <algorithm>
typedef pair<string, int> PairStringInt;
static bool myGreater(const PairStringInt& a, const PairStringInt& b)
{
return (a.second > b.second);
}
int main()
{
vector<int> a;
a.push_back(3);
a.push_back(2);
a.push_back(5);
a.push_back(1);
a.push_back(4);
copy(a.begin(), a.end(), ostream_iterator<int>(cout," "));
cout << endl << endl;
std::sort(a.begin(), a.end(), greater<int>());
copy(a.begin(), a.end(), ostream_iterator<int>(cout," "));
cout << endl << endl;
vector<PairStringInt> vecMsgCount;
vecMsgCount.push_back(make_pair("3333", 3));
vecMsgCount.push_back(make_pair("2222", 2));
vecMsgCount.push_back(make_pair("5555", 5));
vecMsgCount.push_back(make_pair("1111", 1));
vecMsgCount.push_back(make_pair("4444", 4));
size_t i;
for (i = 0; i < vecMsgCount.size(); ++i)
{
cout << vecMsgCount[i].first << endl;
}
cout << endl << endl;
std::sort(vecMsgCount.begin(), vecMsgCount.end(), myGreater);
for (i = 0; i < vecMsgCount.size(); ++i)
{
cout << vecMsgCount[i].first << endl;
}
return 0;
}