.设计支持集合操作的类模板,适合数值类型,设计适当的成员函数,实现支持添加,删除元素
时间: 2024-03-17 15:47:53 浏览: 23
好的,我可以为您设计一个支持集合操作的类模板,适合数值类型,具体实现如下:
```c++
#include <iostream>
#include <vector>
template <typename T>
class Set {
private:
std::vector<T> data;
public:
// 添加元素
void insert(T x) {
if (!contains(x)) {
data.push_back(x);
}
}
// 删除元素
void remove(T x) {
for (typename std::vector<T>::iterator it = data.begin(); it != data.end(); ++it) {
if (*it == x) {
data.erase(it);
break;
}
}
}
// 是否包含元素
bool contains(T x) {
for (typename std::vector<T>::iterator it = data.begin(); it != data.end(); ++it) {
if (*it == x) {
return true;
}
}
return false;
}
// 获取元素个数
int size() {
return data.size();
}
// 清空集合
void clear() {
data.clear();
}
// 输出集合中的元素
void print() {
std::cout << "[";
for (typename std::vector<T>::iterator it = data.begin(); it != data.end(); ++it) {
std::cout << *it;
if (it != data.end() - 1) {
std::cout << ", ";
}
}
std::cout << "]" << std::endl;
}
};
```
这个类模板支持添加、删除、是否包含元素等基本集合操作,通过使用 `vector` 存储元素,可以方便地实现这些操作。其中,`insert` 函数在插入元素之前会先判断元素是否已经存在,如果不存在则插入;`remove` 函数在删除元素时会遍历整个 `vector`,找到第一个等于要删除元素的位置并删除;`contains` 函数也是遍历整个 `vector`,判断是否存在相同元素。此外,还提供了获取元素个数、清空集合和输出集合中的元素等辅助函数。
您可以通过实例化 `Set` 类模板来创建不同类型的集合,例如:
```c++
Set<int> intSet;
intSet.insert(1);
intSet.insert(2);
intSet.insert(3);
intSet.print(); // 输出:[1, 2, 3]
intSet.remove(2);
intSet.print(); // 输出:[1, 3]
```
希望这个类模板能够满足您的需求。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)