用c++ 定义一个求一组元素最大值的函数模型,并给出测试该模版的示例
时间: 2024-02-01 19:14:43 浏览: 30
以下是一个求一组元素最大值的函数模板:
```c++
#include <iostream>
#include <vector>
template<typename T>
T max_element(const std::vector<T>& vec) {
if (vec.empty()) {
throw std::invalid_argument("Empty vector!");
}
T max_elem = vec[0];
for (size_t i = 1; i < vec.size(); ++i) {
if (vec[i] > max_elem) {
max_elem = vec[i];
}
}
return max_elem;
}
int main() {
std::vector<int> int_vec { 1, 2, 3, 4, 5 };
std::vector<double> double_vec { 1.2, 2.3, 3.4, 4.5, 5.6 };
std::vector<std::string> str_vec { "abc", "def", "ghi", "jkl", "mno" };
std::cout << "Max element of int_vec: " << max_element(int_vec) << std::endl;
std::cout << "Max element of double_vec: " << max_element(double_vec) << std::endl;
std::cout << "Max element of str_vec: " << max_element(str_vec) << std::endl;
// Uncomment the following line to test the function with an empty vector
// std::vector<int> empty_vec {};
// std::cout << "Max element of empty_vec: " << max_element(empty_vec) << std::endl;
return 0;
}
```
该函数模板接受一个 `std::vector` 类型的参数,并返回该向量中的最大元素。如果向量为空,则抛出一个 `std::invalid_argument` 异常。
上述代码中,我们提供了三个示例向量(一个整数向量、一个双精度浮点数向量和一个字符串向量),并将每个向量传递给 `max_element` 函数来测试该函数的实现。