c++ - 在属于类 "No matching function for call to swap()"的 vector 上调用 sort()

标签 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 中。

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

最佳答案

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

因此,您不能调用对 vector a->vec 进行排序。您需要找到不同的方法。

关于c++ - 在属于类 "No matching function for call to swap()"的 vector 上调用 sort(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33195972/

相关文章:

c++ - 在多个 STL 对对象上创建迭代器

cout 中的 C++ if-else 语句

c++ - 'const char [26]' 和 'LPSTR ' 类型的无效操作数

c - 我正在用 C 创建程序来计算已创建文件中的单词数,并按字母顺序将单词保存在新文件中

mysql - 从多个表中合并排序数据的有效方法

algorithm - 为什么是 `copy_n` 、 `fill_n` 和 `generate_n` ?

c++ - 初始化后数组重新填充

javascript - 使用 sort() 移动数组开头的对象

c++ - binary_search() 所需的自定义类比较

c++ - 使用与滥用通用算法