C++利用函数重载,分别定义两个函数,能查找一个整数是否在一个整数数组内存在,并且查找一个字符串是否在一个字符串指针数组内,如果存在则返回所在数组元素的下标,如果不存在则返回-1,最后编写main函数进调用
时间: 2025-01-05 16:40:51 浏览: 16
在C++中,函数重载(Function Overload)允许我们使用相同的函数名称,但是通过提供不同的参数列表来创建多个功能上有所区别的函数。为了实现你的需求,我们可以创建两个函数,一个用于整数数组,另一个用于字符串指针数组。
首先,我们需要一个函数模板来处理通用的数组类型,然后为整数数组和字符串数组提供具体的实现:
```cpp
#include <iostream>
#include <vector>
// 函数模板,用于检查元素是否存在
template <typename T>
int findElement(const std::vector<T>& arr, const T& target) {
for (size_t i = 0; i < arr.size(); ++i) {
if (arr[i] == target) {
return static_cast<int>(i); // 返回元素的下标,注意需要转换为整型
}
}
return -1;
}
// 特定于整数类型的版本
int findInteger(const std::vector<int>& intArr, int target) {
return findElement(intArr, target);
}
// 特定于字符串类型的版本
int findString(const std::vector<std::string*>& strPtrArr, const std::string* target) {
return findElement(strPtrArr, *target); // 解引用并传递给通用函数
}
int main() {
// 整数数组示例
std::vector<int> integerArray = {1, 5, 7, 9};
int searchTarget = 5;
int index = findInteger(integerArray, searchTarget);
if (index != -1) {
std::cout << "找到目标整数 " << searchTarget << " 的位置: " << index << std::endl;
} else {
std::cout << "未找到目标整数 " << searchTarget << std::endl;
}
// 字符串指针数组示例
std::vector<std::string*> stringPointerArray = {new std::string("Hello"), new std::string("World")};
std::string* searchStr = "World";
int strIndex = findString(stringPointerArray, searchStr);
if (strIndex != -1) {
std::cout << "找到目标字符串指针 " << *searchStr << " 的位置: " << strIndex << std::endl;
} else {
std::cout << "未找到目标字符串指针 " << *searchStr << std::endl;
}
// 清理内存
for (auto ptr : stringPointerArray) {
delete ptr;
}
return 0;
}
```
阅读全文