std::sort

 

1.使用内置函数对象类

vector<unsigned int> &vecDate)
...

std::sort(vtDate.begin(), vtDate.end(),std::less<unsigned int>());

使用内置函数(大小比较)对象类,该种对象均重载operator()操作符号,

bool operator()const T& lhs, const T& rhs const;

 

该内置对象还存在有:

equal_to, not_equal_to, greater, less_equal, greater_equal

2.自定义lambda表达式

std::vector<const asset_t *> vec;

...
std::sort(vec.begin(), vec.end(), [](const asset_t *first, const asset_t *second)->bool{
if (first->sdate < second->sdate) return true;
else return false;
});

 

std::vector<estCodeResultInfo_t> vec;
while (itt != itt_end){
vec.push_back(itt->second);
++itt;
}

...
std::sort(vec.begin(), vec.end(), [](const estCodeResultInfo_t &first, const estCodeResultInfo_t & second){ return (first.pfr > second.pfr) ? true : false; });

3.自定义比较函数

typedef bool(*GMXtmblkMap_item_cmp_fn) (const T & first,const T & second);
GMXtmblkMap_item_cmp_fn m_fnCmp;

...

std::stable_sort(pData, pData + count, m_fnCmp);
//std::sort(pData, pData + count, m_fnCmp);
T *pNewEnd = std::unique(pData,pData + count,fn); //fn为判断相同的函数

当排序中存在同值数据时,使用stable_sort可获取稳定的排序,再使用unique删除同值数据

4.自定义函数对象类

如同1,自定义函数对象类

 

 

 







 

posted @ 2019-06-06 22:11  Reboost  阅读(295)  评论(0)    收藏  举报