在属于 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
。您需要找到不同的方法。
我有一个 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
。您需要找到不同的方法。