c++语言编写一个函数模板,实现 10个数据的输入,返回 10个数中值最大的。并对数据是 int、float、 char 进行判断
时间: 2024-09-19 10:11:55 浏览: 45
第二章 数据类型、运算符和表达式(二级C++).pdf
在 C++ 中,你可以使用函数模板(template)来创建一个通用的函数,这个函数可以接受不同类型的数据作为参数,并找到其中的最大值。下面是一个简单的示例:
```cpp
#include <iostream>
#include <typeinfo>
// 函数模板,寻找并返回给定数据类型的最大值
template<typename T>
T findMax(const std::vector<T>& numbers) {
if (numbers.empty()) {
throw std::runtime_error("Vector is empty");
}
// 使用第一个元素初始化最大值
T max_value = numbers[0];
for (const auto& value : numbers) {
if (std::holds_alternative<T>(typeid(value).name())) {
// 使用std::get获取value的T类型实例
if (*value > max_value) {
max_value = *value;
}
} else {
std::cerr << "Unsupported data type: " << typeid(value).name() << std::endl;
return T(); // 返回默认值(这里仅为了展示,实际应处理这种情况)
}
}
return max_value;
}
int main() {
std::vector<int> int_numbers = {1, 5, 3, 8, 2};
std::cout << "Max integer: " << findMax(int_numbers) << std::endl;
std::vector<float> float_numbers = {1.2f, 3.4f, 2.7f, 5.6f, 1.9f};
std::cout << "Max float: " << findMax(float_numbers) << std::endl;
std::vector<char> char_numbers = {'a', 'b', 'c', 'd', 'e'};
std::cout << "Max character: " << findMax(char_numbers) << std::endl; // 字符串将被视为字符数组
return 0;
}
```
在这个例子中,`findMax`函数模板接收一个`std::vector`作为参数,遍历每个元素并比较其大小。如果遇到非支持的数据类型(如字符串),它会打印一条错误消息并返回一个默认值。
阅读全文