我想对一个包含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)