首页 > 代码库 > 使用对象中的几个key值来排序

使用对象中的几个key值来排序

环境:vs2012 win7 c++

1 #include<alogrithem>

2 写一个比较函数,体现对象间是按照哪些key值来排序的。

3 使用std::sort函数。

例子如下:

#include <algorithm>
/*
排序规律:
星级最大的排前面,其次等级越大排前面,再其次是经验越大排前面,最后是其次是ID值越大排越后面。
*/
bool myCompare(GameCardVo* obj1,GameCardVo* obj2)
{

    if (obj1->configRoleData->star!=obj2->configRoleData->star)    //星级第一优先考虑
    {
        return (obj1->configRoleData->star>obj2->configRoleData->star);
    } 
    else
    {
        if (obj1->getLevel()!=obj2->getLevel())
        {
            return (obj1->getLevel()>obj2->getLevel());
        } 
        else
        {
            if (obj1->getExp()!=obj2->getExp())
            {
                return (obj1->getExp()>obj2->getExp());
            } 
            else
            {
                return (obj1->ownID_INT<obj2->ownID_INT);
            }
        }
    }
}

开始使用:

std::vector<GameCardVo*> vectorSortCard;
        int i=0;
        for(i = 0; i<len; i++)
        {
            auto role = (GameCardVo*)arr.at(i);
            vectorSortCard.push_back(role);
        }
        std::sort(vectorSortCard.begin(),vectorSortCard.end(),myCompare);

ok了。代码很明显是不全的,主要是记录下大概怎么做。