我想以一种简单的方式对数组进行排序,但我确实在下面得到了这个错误。如何处理?
**No matching function for call to 'sort(int [2000], int)'|**
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int v[2000];
std::sort(v, 2000);
cout << "Hello world!" << endl;
return 0;
}
答案 0 :(得分:1)
正确的陈述是:
std::sort(v, v + 2000);
该函数需要两个迭代器,即要排序的范围的开头和结尾。指针是一个随机访问迭代器,因此可以由期望它的函数使用它。在这种情况下,v + 2000
指向数组末尾并正确代表范围的结尾。
答案 1 :(得分:1)
您有两种可能性:
std::sort(v, v + 2000);
或者
std::sort(std::begin(v), std::end(v));
第一种方法仅适用于数组,后者适用于std::vector
,std::array
和许多其他容器。