在属于 class "No matching function for call to swap()" 的向量上调用 sort()

Calling sort() on a vector that's a member of a class "No matching function for call to swap()"

我有一个 class A 声明为:

class A {
public:
    vector<int> vec;
};

运行以下代码:

const A *a = new A();
sort(a->vec.begin(), a->vec.end());

给我错误:

algorithm: No matching call to swap()

在 Xcode.

关于为什么会发生这种情况的任何线索?

const A *a 表示“指向 const A 的指针,这意味着 a 指向的对象不能通过 a 修改。 sort 修改传递给它的迭代范围的元素。由于这些元素属于 a 指向的对象,因此无法通过 a.

修改它们

因此,您不能调用向量排序 a->vec。您需要找到不同的方法。