小编Koa*_*ach的帖子

使用const成员对自定义对象的向量进行排序

我想对一个包含const成员变量的类对象的向量进行排序。
不幸的是,我收到一条错误消息,指出“没有匹配函数可调用” swap””。

当我删除constfor 的关键字时id,则std::sort()可以同时使用重载operator<()和自定义比较功能。

为什么会这样呢?我通常可以不使用const成员变量对属于类的对象进行排序吗?

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct A
{
    const int id;
    A(int id) : id(id) {}
    bool operator<(const A &other) const
    {
        return id < other.id;
    }
};

bool cmp(const A &lhs, const A &rhs)
{
    return lhs.id < rhs.id;
}

int main()
{
    vector<A> vec;
    vec.emplace_back(3);
    vec.emplace_back(0);
    vec.emplace_back(2);
    vec.emplace_back(1);
    std::sort(vec.begin(), vec.end());
    std::sort(vec.begin(), vec.end(), cmp);
}
Run Code Online (Sandbox Code Playgroud)

c++ sorting stl

5
推荐指数
1
解决办法
355
查看次数

标签 统计

c++ ×1

sorting ×1

stl ×1