函数模板设计并实现一个通用集合类
时间: 2024-05-12 07:15:27 浏览: 96
好的,我来为您介绍一个通用集合类的函数模板设计。这个集合类可以存储任意类型的数据,并支持常见的集合操作,如添加元素、删除元素、查找元素和遍历元素等。
首先,我们需要定义一个类模板,来表示这个通用集合类。这个类模板可以有一个模板参数,用来指定集合中元素的类型。然后,我们需要在这个类模板中定义一些成员函数,来完成常见的集合操作。
下面是一个简单的通用集合类的函数模板设计:
```cpp
template<typename T>
class Collection {
public:
// 添加元素
void add(T value);
// 删除元素
void remove(T value);
// 查找元素
bool contains(T value);
// 遍历元素
void forEach(void (*func)(T));
private:
std::vector<T> m_data;
};
template<typename T>
void Collection<T>::add(T value) {
m_data.push_back(value);
}
template<typename T>
void Collection<T>::remove(T value) {
auto it = std::find(m_data.begin(), m_data.end(), value);
if (it != m_data.end()) {
m_data.erase(it);
}
}
template<typename T>
bool Collection<T>::contains(T value) {
return std::find(m_data.begin(), m_data.end(), value) != m_data.end();
}
template<typename T>
void Collection<T>::forEach(void (*func)(T)) {
for (auto& elem : m_data) {
func(elem);
}
}
```
在这个代码中,我们首先定义了一个类模板 `Collection`,它有一个模板参数 `T`,表示集合中元素的类型。然后,我们在这个类模板中定义了四个成员函数,分别是 `add`、`remove`、`contains` 和 `forEach`。这四个函数分别完成添加元素、删除元素、查找元素和遍历元素的功能。
在 `add` 函数中,我们使用了 `std::vector` 来存储元素,然后使用 `push_back` 函数将新元素添加到集合中。
在 `remove` 函数中,我们使用了 `std::find` 函数来查找要删除的元素,然后使用 `erase` 函数将它从集合中删除。
在 `contains` 函数中,我们使用了 `std::find` 函数来查找指定的元素是否存在于集合中。
在 `forEach` 函数中,我们使用了一个函数指针作为参数,来表示对集合中每个元素要执行的操作。然后,我们使用 `for` 循环遍历集合中的每个元素,并依次调用指定的函数。
这样,我们就完成了一个简单的通用集合类的函数模板设计。您可以根据实际需求,对这个模板进行扩展和优化。
阅读全文