使用C++设计一个类模板,其中包括数据成员Ta[n]以及在其中进行查找数据元素的函数 int search(T),模板参数T可实例化成字符串。
时间: 2024-02-11 08:04:11 浏览: 61
C++的函数模板和类模板
5星 · 资源好评率100%
好的,这是一个示例代码:
```c++
#include <iostream>
#include <string>
template <typename T, int n>
class SearchClass {
private:
T Ta[n];
public:
SearchClass(T arr[]) {
for (int i = 0; i < n; i++) {
Ta[i] = arr[i];
}
}
int search(T key) {
for (int i = 0; i < n; i++) {
if (Ta[i] == key) {
return i;
}
}
return -1;
}
};
int main() {
std::string arr[5] = {"hello", "goodbye", "world", "foo", "bar"};
SearchClass<std::string, 5> sc(arr);
std::cout << "Index of \"world\": " << sc.search("world") << std::endl;
std::cout << "Index of \"baz\": " << sc.search("baz") << std::endl;
return 0;
}
```
在这个示例中,我们定义了一个类模板 `SearchClass`,它有两个模板参数:`T` 和 `n`。`T` 可以实例化成任何类型,但在这个示例中我们将其实例化成了 `std::string`。`n` 是一个整数,指定了 `Ta` 数组的大小。我们在类中定义了一个构造函数,它接受一个 `T` 类型的数组,并将其复制到 `Ta` 数组中。我们还定义了一个 `search` 函数,它接受一个 `T` 类型的参数 `key`,并在 `Ta` 数组中查找这个元素。如果找到了,它将返回元素在数组中的索引;否则返回 -1。
在 `main` 函数中,我们先创建了一个 `std::string` 类型的数组,并将其传递给 `SearchClass` 的构造函数。然后我们通过调用 `search` 函数来查找数组中的元素,并输出结果。
阅读全文