c++ std::sort() 任何可比较成员仅使用一个比较函数的对象 vector

标签 c++ sorting vector stl

是否可以调用std::sort()std::vector 上以这样一种方式我们可以指定将使用哪个成员来比较对象,而不必为每个成员实现单独的比较函数。我们可以假设我们要排序的每个成员都有 <运营商定义。如果不是,当我们希望能够根据许多不同的标准对对象容器进行排序时,最好的方法是什么。

最佳答案

你可以有一个比较对象,它有一个标志,指示要对哪个成员进行排序。

class Comparo
{
    int m_field;
public:
    Comparo(int field)  : m_field(field) { }
    bool operator()(const MyClass & Left, const MyClass & right)
    {
        switch (m_field)
        {
            case 0:
                return left.A < right.A;
            case 1:
                return left.B < right.B;
        }
    }
};

std::vector<MyClass> vec = FillMyVector();
std::sort(vec.begin(), vec.end(), Comparo(0));  // sorts on field A
std::sort(vec.begin(), vec.end(), Comparo(1));  // sorts on field B

关于c++ std::sort() 任何可比较成员仅使用一个比较函数的对象 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24847210/

相关文章:

c++ - 友元定义函数的命名空间是什么?

c++ - 获取指向 vector 元素的指针

java - 使用多个条件对 ArrayList 进行排序

arrays - 删除和移动数组元素

c++ - 类 operator[] 不返回 lhv

C++ vector 访问错误

C++ std::vector 在头文件中初始化和设置

c++ - QT 文本编辑小部件中的引号

c++ - 测试位以创建字符串 - 有更好的方法吗?

c# - 如何强制刷新DataGridView 的内容?