【发布时间】:2016-06-29 14:18:39
【问题描述】:
我需要使用std::is_sorted() 函数检查数组是否已排序。我不确定如何使用begin() 和end(),所以我只是将数组传递给函数。
void sorted(bool value){
if(value)
cout << "Array is sorted" << endl;
else
cout << "Array is not sorted" << endl;
}
int main(){
int a[10], i;
cout << "Enter the sequence" << endl;
for(i=0; i<5; i++){
cin >> a[i];
}
bool value = is_sorted(a);
sorted(value);
return 0;
}
当我这样做时,虽然我收到了类似的错误
is_sorted 函数没有匹配的调用
【问题讨论】:
-
错误表明没有匹配的 is_sorted 函数调用。
-
bool value = std::is_sorted(a, a + 5);别忘了#include <algorithm>。哦,你的意思是声明一个包含 10 个元素的数组,然后只填充其中的 5 个? -
取一个副本,对副本排序,将副本与原件进行比较-> set bool
-
@FirstStep - 即使您必须自己实现此算法,也没有理由复制向量。您所要做的就是查看每一对连续的元素。如果其中任何一个不按顺序排列,则向量未排序。
-
is_sorted默认检查是否按升序排序(准确地说,相对于std::less谓词排序)。如果你想检查降序排序,你可以做is_sorted(a, a+5, std::greater<int>())
标签: c++ arrays sorting arraylist