没有匹配函数用于排序(int [2000],int)' |排序数组时

时间:2014-03-24 20:45:27

标签: c++ arrays sorting

我想以一种简单的方式对数组进行排序,但我确实在下面得到了这个错误。如何处理?

**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;
}

2 个答案:

答案 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::vectorstd::array和许多其他容器。