c++设计实现一个函数模板,实现任意数据类型的查找。
时间: 2024-01-24 11:16:43 浏览: 99
可以使用函数模板和迭代器来实现一个通用的查找函数,如下所示:
```c++
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
template<typename T>
typename std::vector<T>::iterator find_elem(std::vector<T>& vec, const T& elem)
{
return std::find(vec.begin(), vec.end(), elem);
}
int main()
{
std::vector<int> int_vec{1, 2, 3, 4, 5};
auto int_it = find_elem(int_vec, 3);
if (int_it != int_vec.end())
std::cout << "Found " << *int_it << std::endl;
else
std::cout << "Not found" << std::endl;
std::vector<std::string> str_vec{"apple", "banana", "cherry"};
auto str_it = find_elem(str_vec, "banana");
if (str_it != str_vec.end())
std::cout << "Found " << *str_it << std::endl;
else
std::cout << "Not found" << std::endl;
return 0;
}
```
在上面的代码中,`find_elem` 函数接受一个 `std::vector` 类型的参数,以及一个需要查找的元素。函数的返回值是一个迭代器,如果找到了该元素,则返回指向该元素的迭代器,否则返回 `vec.end()`。
由于 `find_elem` 是一个函数模板,所以可以使用任意数据类型的 `std::vector` 容器来调用该函数。在 `main` 函数中,我们分别使用了 `int` 和 `std::string` 类型的 `std::vector` 容器来查找元素。
阅读全文