在一个类的成员上调用sort()“没有用于调用swap()的匹配函数”

时间:2015-10-18 08:44:59

标签: c++ sorting stl-algorithm

我有一个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中。

有关为何发生这种情况的任何线索?

1 个答案:

答案 0 :(得分:2)

const A *a表示&#34;指向const A的指针,这意味着a指向的对象无法通过a进行修改。 sort修改传递给它的迭代范围的元素。由于这些元素归a指向的对象所有,因此无法通过a对其进行修改。

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