加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中,是否可以根据这些对象的任何属性轻松地对对象类型指针的向

发布时间:2020-12-16 10:45:43 所属栏目:百科 来源:网络整理
导读:是否可以根据这些对象的任何属性轻松地对对象类型指针的向量进行排序? 假设学生是对象类型指针的向量,当对象学生是学生类型并且有两个方法student.studentAlias()和student.studentName()时.如何根据别名对向量进行排序? 提前致谢. 解决方法 你可以使用仿
是否可以根据这些对象的任何属性轻松地对对象类型指针的向量进行排序?

假设学生是对象类型指针的向量,当对象学生是学生类型并且有两个方法student.studentAlias()和student.studentName()时.如何根据别名对向量进行排序?

提前致谢.

解决方法

你可以使用仿函数:

#include <vector>
#include <algorithm>

class StudentAliasComparator
{
public:
    bool operator()(const Student* left,const Student* right) const
    {
        return left->studentAlias() < right->studentAlias();
    }
};

void SortVectorOfStudentByAlias(std::vector<Student*>& students)
{
    std::sort(students.begin(),students.end(),StudentAliasComparator());
}

您也可以使用来自boost或langage的lambda(如果使用C 0x).使用C 0x语法,它会是这样的(无法检查,因为我现在无法访问支持C 0x的C编译器):

void SortVectorOfStudentByAlias(std::vector<Student*>& students)
{
    std::sort(students.begin(),[](const Student* l,const Student* r) {
            return l->studentAlias() < r->studentAlias(); })
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读