我需要使用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函数调用
答案 0 :(得分:2)
std::is_sorted
适用于一系列不在&#34;容器&#34;上的迭代器。要使用它,您需要将迭代器传递到要检查的范围的开头,并将一个迭代器传递到要检查的范围的结尾。大多数(如果不是所有)标准容器都有begin()
和end()
成员,这非常方便但不幸的是原始数组没有。
幸运的是,虽然我们有std::begin
和std::end
将返回一个迭代器并且将使用原始数组(如果数组被传递给类似void foo(int arr[])
的函数,这将不起作用衰减到指针并且不是函数中的数组。)
因此,如果您想将std::is_sorted
与原始数组一起使用,则可以使用
std::is_sorted(std::being(array_name), std::end(array_name));
将检查整个阵列。
此外,您还可以使用指针表示法,因为迭代器是
的抽象std::is_sorted(array_name + x, array_name + y)
x
的范围[0, array_size - 1]
和y
范围为[x + 1, array_size]