人比较懒。。。直接上代码:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 #include "stdafx.h"
#include <Windows.h>
#include <vector>
#include <algorithm>
#include <iostream>
#include <functional>
class xTestElement
{
public:
xTestElement()
{
}
virtual ~xTestElement()
{
}
//return whether self's m_value is less then another object's m_value
bool operator < (const xTestElement& rhv ) const
{
return this->m_value < rhv.m_value;
}
public:
int m_value;
};
class xTestElementSorter
{
public:
// Return whether first element is less than the second
bool operator () (const xTestElement *a,const xTestElement *b) const
{
return *a < *b;
};
};
// Return whether first element is less than the second
bool Testless(xTestElement* a,xTestElement* b)
{
return *a < *b;
}
typedef std::vector<xTestElement*> vTestQueue;
typedef vTestQueue::iterator itTestQueue;
vTestQueue g_vQueues;
int _tmain(int argc, _TCHAR* argv[])
{
xTestElement TestQueue[10];
for (int i= 0 ;i<10;i++)
{
TestQueue[i].m_value = rand();
std::cout<<TestQueue[i].m_value<<std::endl;
g_vQueues.push_back(&TestQueue[i]);
}
std::cout<<"begin sort :["<<GetTickCount()<<"]!"<<std::endl;
//use sort class
std::sort(g_vQueues.begin() , g_vQueues.end() , xTestElementSorter());
//use sort function
//std::sort(g_vQueues.begin() , g_vQueues.end() , Testless);
std::cout<<"end sort :["<<GetTickCount()<<"]!"<<std::endl;
for (itTestQueue it = g_vQueues.begin();it!=g_vQueues.end();++it)
{
std::cout<<(*it)->m_value<<std::endl;
}
g_vQueues.clear();
return 0;
}