【发布时间】:2020-12-15 19:11:28
【问题描述】:
从标题中可以看出,我想从使用数组实现的队列中删除一个元素。
例如,如果我有:
array[]={1,5,4,3,2}
我希望它看起来像这样
array[]={1,4,3,2}
我需要从队列中删除它,但上面只是我想要做的一个简单版本。以下是可能对您有所帮助的其余代码,对我有所帮助。
class QueueArray: Queue <InfoTip> {
private:
int capacity; // capacity
int beginning; // index of the first element
int end; // end of the array
InfoTip *elements; // elements of queue
public:
QueueArray(int capacity = 10) : capacity(capacity), // Konstruktor
beginning(-1),end(-1), elements (new InfoTip[capacity]) {}
~QueueArray() { delete [] elements; }
template <typename InfoTip> // putting elements in a queue
void QueueArray<InfoTip>::putInArray(const InfoTip &x) {
end = (end + 1) % capacity;
elements[end] = x;
if (beginning == -1)
beginning= 0;
}
这是我为从队列数组中删除最大元素而编写的函数
template <typename InfoTip>
void QueueArray<InfoTip>::deleteMax() {
InfoTip max = 0;
for(int i = 0; i < capacity; i++) {
if(max < elements[i]) {
max = elements[i];
}
}
【问题讨论】:
-
为什么不在队列实现中使用
std::vector而不是new[]和delete[]? -
开始不是开始
-
@bloody 兄弟/姐妹这并不重要。不要评论只是为了得分哈哈
-
我的评论与您的问题有关。使用
std::vector,而不是您的代码处理内存管理。删除最大元素是一两行代码,没有多少行充满new[]和delete[]调用。 -
请注意,cmets 可能与呈现代码的任何方面有关。这就是 cmets 的用途,而不是 an answer。帮助/建议/建议/引起注意。英语相关的 cmets 常见吗?不——我承认。然而,正确的拼写有助于代码的流畅和不间断的可读性,所以如果你不这么认为,这甚至不仅仅是纯粹的语言评论。据我所见,cmets总是带着一份善意。因此,不要误判他们的意图或看到他们在伪装。 Stackoverflow 是一个专业的门户网站,而不是一个年轻的 Facebook 聊天室。祝你好运!