Vector求指导
定义的结构体为
typedef struct _tagStockItem
{
UINT uStockPlaceId; //节点位置
int marketType;
TCHAR strStockText[40]; //文件保存内容
TCHAR StockMarket[40]; //界面显示内容
bool operator < (const _tagStockItem& item) const
{
return (uStockPlaceId<item.uStockPlaceId);
}
bool operator > (const _tagStockItem& item) const
{
return item < *this;
}
}StockItem,*pStockItem;
如果下面这样Vector是可以排序的
StockItem test = {0};
StockItem test1 = {0};
test.uStockPlaceId = 3;
test1.uStockPlaceId = 1;
vector<StockItem > vtHotkey1;
vtHotkey1.push_back(test);
vtHotkey1.push_back(test1);
stable_sort(vtHotkey1.begin(),vtHotkey1.end(),less<_tagStockItem>());
但是现在很多地方用到的都是结构体指针:
StockItem *test = new StockItem;
StockItem *test1 = new StockItem;
test->uStockPlaceId = 3;
test1->uStockPlaceId = 1;
vector<StockItem *> vtHotkey1;
vtHotkey1.push_back(test);
vtHotkey1.push_back(test1);
stable_sort(vtHotkey1.begin(),vtHotkey1.end(),less<_tagStockItem *>());
排序就会出问题,求大神指导下应该怎么排序
[解决办法]
先写一个函数
bool lessStockItem( const StockItem* l, const StockItem*r)
{
return *l < *r ;
}
stable_sort(vtHotkey1.begin(),vtHotkey1.end(),lessStockItem );