📅  最后修改于: 2023-12-03 14:59:49.201000             🧑  作者: Mango
在C++中,我们可以使用STL库中的is_sorted
函数来检查向量是否已排序。该函数可以处理不同类型的数据,包括自定义类型,同时也支持自定义比较函数。
template <class ForwardIterator>
bool is_sorted (ForwardIterator first, ForwardIterator last);
template <class ForwardIterator, class Compare>
bool is_sorted (ForwardIterator first, ForwardIterator last, Compare comp);
first
:向量的起始迭代器last
:向量的结束迭代器comp
:可选参数,定义用于比较元素的函数,应接受两个参数,如果第一个参数小于第二个参数则返回true
is_sorted
函数返回一个布尔值,如果第一个指针和最后一个指针之间的元素按照升序排列,则返回true
,否则返回false
。
以下是一个简单的C++代码示例,演示如何使用is_sorted
函数检查向量是否已排序。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v1{1,2,3,4};
vector<int> v2{4,3,2,1};
if(is_sorted(v1.begin(), v1.end()))
cout << "v1 is sorted" << endl;
else
cout << "v1 is not sorted" << endl;
if(is_sorted(v2.begin(), v2.end()))
cout << "v2 is sorted" << endl;
else
cout << "v2 is not sorted" << endl;
return 0;
}
输出:
v1 is sorted
v2 is not sorted
以上示例中,我们创建了两个向量,v1和v2,其中v1已经按升序排序,v2没有排序。我们使用is_sorted
函数检查这两个向量是否已排序,并输出结果。
有时我们可能需要使用自定义的比较函数来检查向量是否已排序。例如,如果我们想按照降序检查向量是否已排序,可以创建一个自定义的比较函数来代替默认的升序比较函数。
以下是一个示例代码,演示如何使用自定义比较函数来检查向量是否已排序。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool compare(int a, int b)
{
return a > b;
}
int main()
{
vector<int> v1{4,3,2,1};
vector<int> v2{1,2,3,4};
if(is_sorted(v1.begin(), v1.end(), compare))
cout << "v1 is sorted in descending order" << endl;
else
cout << "v1 is not sorted in descending order" << endl;
if(is_sorted(v2.begin(), v2.end(), compare))
cout << "v2 is sorted in descending order" << endl;
else
cout << "v2 is not sorted in descending order" << endl;
return 0;
}
输出:
v1 is sorted in descending order
v2 is not sorted in descending order
以上示例中,我们创建了两个向量,v1和v2,其中v1按照降序排序,v2按照升序排序。我们使用is_sorted
函数和自定义比较函数来检查这两个向量是否已排序,并输出结果。