如何使用C++实现一个简单的集合类?
作者:向治霖 发布时间:[ 2016/7/4 10:39:33 ] 推荐标签:.NET 测试开发技术
来自于C++程序设计的一个题目。实现一个集合类,要求实现以下4个操作。
向集合中添加元素,如果集合中已存在元素则不添加
从集合中移除元素,移除之前需要先判断集合中元素是否存在
重载+运算符,用以实现集合的求并集运算
重载*运算符,用以实现集合的求交集运算
1.类的整体设计
该问题需要模拟实现集合类,我们可以使用数组来模拟集合,于是使用int items[100]用来存放集合中的数据。为了实现数组的遍历,这需要一个整数用来表示数组中元素的个数,于是使用int number来表示数组中元素的个数;此外,为了实现题目的需求,设计以下四个函数:
使用add_item(int item)成员函数向数组中添加元素
使用remove_item(int item)成员函数向数组中移除元素
重载operator+表示集合的求并集运算
重载operator*表示集合的求交集运算
由于向集合添加元素之前,必须确保集合中不存在该元素;在从集合中移除元素之前,必须确保集合中存在该元素,因此添加is_exist(int item)方法用以判断集合中是否存在这个元素;此外为了显示集合,添加display()方法, 基本设计如下:
class Set
{
public:
int items[100]; //定义一个数组作为容器存放100个集合元素
int number; //定义数字i表示集合中元素的个数
//构造函数和析构函数
Set() {
this->number = 0;
memset(this->items,0,sizeof(items));
}
//初始化方法
int init(int items[], int num);
//添加元素
bool add_item(int item);
//删除元素
bool remove_item(int item);
//求集合的并集
Set operator+ (Set set2);
//求集合的交集
Set operator* (Set set2);
//显示集合元素
int display();
//判断集合当中是否存在item,返回元素在集合中的位置,不存在返回-1
int is_exist(int item);
};
2.构造函数
Set() {
this->number = 0;
memset(this->items,0,sizeof(items));
}
在构造函数中,我们对数组进行初始化,声明完数组之后,如果不进行初始化,数组元素是随机值,在C语言中,变量不进行初始化都会被分配随机值。为了避免这种情况,我们使用memset函数对数组items所有元素全部赋值为0;同时,由于此时数组中没有元素,即元素个数为0,我们的number也应当赋值为0.
3.判断数组中是否包含元素 item
int Set::is_exist(int item)
{
for(int i=0; i< this->number; i++) {
if(this->items[i] == item) {
return i;
}
}
return -1;
}
该函数用于判断数组中是否存在item元素,如果存在返回item元素的位置,如果不存在返回-1. 判断方法非常简单,写一个for循环从items[0]-items[number-1]一个一个进行遍历。如果相等,直接返回i,此时i是数组中item元素的位置;如果遍历完整个数组之后,都没有发现与item相等的数组元素,说明数组中不存在item这个元素,于是返回-1.
4.向数组中添加元素
bool Set::add_item(int item)
{
if(is_exist(item) >= 0 || this->number >= 100) {
return false;
}
this->items[this->number] = item;
this->number++;
return true;
}
首先判断数组中是否存在该元素,如果存在则不能再向集合中添加元素,直接返回false,如果不存在,则向数组中的number所指向的那个位置添加该元素,然后number作为数组元素个数的指示器+1,这样完成了添加元素。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11