利用STL中的sort對vector中指針元素的排序
本以為很簡單的一個sort,卻始終排不出來正確的順序,讓我有些納悶,后來仔細一想,我只是對指針(地址)進行了排序,并沒有對vector中的元素進行排序。
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
class MyClass
{
public:
MyClass(void) {}
~MyClass(void) {}
int m_value;
};

bool cmp( const MyClass* p1,const MyClass* p2 )
{
return (*p1).m_value<(*p).m_value;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<MyClass*> m_pVector;
MyClass* a = new MyClass;
a->m_value = 12;
m_pVector.push_back(a);
a = new MyClass;
a->m_value = 25;
m_pVector.push_back(a);
a = new MyClass;
a->m_value = 8;
m_pVector.push_back(a);
sort(m_pVector.begin(),m_pVector.end(),cmp);
for (vector<MyClass*>::iterator it = m_pVector.begin(); it != m_pVector.end(); it++)
std::cout << (*it)->m_value << std::endl;
system("pause");
return 0;
}
上面就是簡單的一個demo,對指針容器進行排序。
posted on 2011-04-25 12:37 Stone xin 閱讀(3543) 評論(0) 編輯 收藏 引用 所屬分類: STL&&BOOST


MyClass(

