我得到了一项任务,我正在努力弄清楚我应该如何实现它。
我已经粘贴了让我困惑的作业部分
编写一个deque类来保存一个整数列表,该列表在内部用圆形数组实现。数组的大小可以在构造函数中传递,或者您可以决定默认值。该类将维护保存列表头部和尾部的索引位置的数据成员
该课程应具有成员职能:
•bool isEmpty();
•bool isFull();
•bool insertFront(int)
•bool removeFront(int&)
•bool insertBack(int)
•bool removeBack(int&)
通过从前面一次删除一个项目来打印数组中的所有项目。
所以我写完了所有的功能,让deque工作,我努力的事情是:
“数组的大小可以在构造函数中传递” 所以为了实现这一点,我在我的类中声明了一个名为array的指针,然后在我的构造函数中声明了array = new int [size],这是唯一的方法,我很高兴它有效但不确定是否有更好的解决方案。我在考虑矢量,但认为这太容易了。我也可以为大小声明一个const并在我的类中初始化数组,但又一次很容易。
bool removeFront(int&)
和bool removeBack(int&)
函数让我很困惑,我应该传递什么参考?返回类型也是bool,但后来在赋值中我被要求“通过从前面一次删除一个来打印数组中的所有项目”我怎么能用返回类型的bool来做,而不是int
我已经更改了我的函数以删除引用并返回类型为int以使代码工作,但是想知道如何按照赋值的方式实现它?
答案 0 :(得分:1)
根据列出的要求,函数参数的意图是明确的。原因如下:
拿
bool removeFront(int& );
这不仅删除缓冲区前面的元素,而且将其存储在通过引用传递的参数中。但是,该函数返回一个“bool”,表示它是否能够成功删除。
示例用法如下:
int elem;
while (removeFront(elem)) {
printf("element : %d ", elem);
}
这里变量“elem”通过引用传入。因此,在成功执行removeFront()之后,您将使用刚删除的元素的值填充elem。
同样的推理适用于其他类似的方法。请返回使用原始规范中给出的参考模式参数。
int&参数不是像其他答案所建议的那样计算元素数。
回答第1部分:
你的解决方案非常不错。你也可以
std :: array用于存储元素。有一个高级技巧来进行可变长度数组的就地分配 - 但是,这超出了这个问题的范围。
答案 1 :(得分:0)
"数组的大小可以在构造函数"
中传递
除非另有说明,否则请使用矢量。使用旧式阵列只是在寻找麻烦。
" bool removeFront(int&)"和" bool removeBack(int&)"函数让我很困惑,我应该传递什么参考?
这是个人偏好的问题,但传入单个int作为参考可能是相当不必要的,函数所做的事情(如果我理解你的问题正确)是删除数组中的元素。你作为参数传递的int的位置。如果正确删除了所述元素,则可能需要返回true值,否则返回false值。
编辑:在阅读帖子后,功能可能只是删除了' int'数组前面或后面的元素数量。返回值应如前所述但是在作业的后期,我要求"打印阵列中的所有项目,一次从前面删除一个项目"我怎么能用返回类型的bool来做这个,而不是int?
函数的返回类型与此无关(除非您被要求递归执行)。只需执行一个从数组开头开始并输出其内容的循环,删除相同的元素,然后跳转到下一个循环并重复该过程,直到它超出元素。同样,这对任何STL容器都更安全,因为您可以使用迭代器。