用函数模板判断顺序表中元素是否有序
时间: 2024-09-18 11:15:57 浏览: 23
在编程中,特别是C++等支持模板的编程语言中,可以使用函数模板来创建一个通用的函数,用于检查不同类型的数据结构,如顺序表(通常指数组或者链表),是否按照特定顺序(如升序或降序)。这种通用性的实现会接受一个模板类型的参数,例如`template <typename T>`,T代表数据类型。
下面是一个简单的示例,假设我们有一个模板函数`is_sorted`,它接受一个顺序表和比较操作符(默认为小于运算符`<`):
```cpp
#include <iostream>
#include <vector>
// 比较操作符模板
template<typename T>
bool compare(T a, T b) {
return a < b; // 默认按升序比较
}
// 判断顺序列表是否有序
template<typename T>
bool is_sorted(const std::vector<T>& list, bool (*cmp)(T, T) = compare) {
for (size_t i = 0; i < list.size() - 1; ++i) {
if (cmp(list[i], list[i + 1])) {
return false;
}
}
return true;
}
int main() {
std::vector<int> int_list = {1, 2, 3, 4, 5};
std::cout << (is_sorted(int_list)) ? "Int List is sorted" : "Not sorted" << std::endl;
// 如果需要按降序检查,传递自定义比较函数
std::vector<double> double_list = {5.0, 4.5, 3.8, 2.9, 1.0};
std::cout << (is_sorted(double_list, [](double a, double b) { return a > b; }))
<< "Double List is sorted in descending order" << std::endl;
return 0;
}
```